README.zh-TW.md
Rama main · réplica de lectura del repositorio original.
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/wordmark-dark.svg"><img src="docs/wordmark-light.svg" alt="career-ops" width="250" height="56"></picture></p>
<p align="center">開源的 AI 求職代理人。</p>
<p align="center">
<a href="README.md">English</a> |
<a href="README.es.md">Español</a> |
<a href="README.de.md">Deutsch</a> |
<a href="README.fr.md">Français</a> |
<a href="README.pt-BR.md">Português (Brasil)</a> |
<a href="README.ko-KR.md">한국어</a> |
<a href="README.ja.md">日本語</a> |
<a href="README.cn.md">简体中文</a> |
<a href="README.zh-TW.md">繁體中文</a> |
<a href="README.ua.md">Українська</a> |
<a href="README.ru.md">Русский</a> |
<a href="README.pl.md">Polski</a> |
<a href="README.da.md">Dansk</a> |
<a href="README.ta.md">தமிழ்</a> |
<a href="README.ar.md">العربية</a> |
<a href="README.hi.md">हिन्दी</a> |
<a href="README.tr.md">Türkçe</a> |
<a href="README.vi.md">Tiếng Việt</a> |
<a href="README.id.md">Bahasa Indonesia</a>
</p>
<p align="center"><a href="https://career-ops.org/zh?utm_source=readme&utm_content=zh-tw">網站目前只有簡體中文版:career-ops.org/zh</a></p>
<!-- The non-breaking spaces ( ) and word joiners (⁠) below decide where each line wraps on a phone. Keep them when editing. -->
<p align="center"><a href="https://github.com/santifer"><img src="docs/avatar-santifer.png" width="48" height="48" align="middle" alt="Santiago Fernández de Valderrama Aparicio"></a> 由 <a href="https://github.com/santifer"><strong>@santifer</strong></a> 建立, <a href="https://github.com/career-ops-hq/career-ops/blob/main/README.zh-TW.md#builders"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/builders-stack-dark.svg"><img src="docs/builders-stack-light.svg" alt="" height="32" align="middle"></picture></a> <a href="https://github.com/career-ops-hq/career-ops/blob/main/README.zh-TW.md#builders">700+ 位貢獻者</a>參與</p>
<p align="center">
<strong>幾個月投出去的履歷,全都石⁠沉⁠大⁠海。</strong><br>
所以我做了自己需要的那個過⁠濾⁠器。
</p>
<p align="center">
<strong>740 個職缺已評估。68 個已投遞。12 場⁠面⁠試。⁠1 份 offer。</strong><br>
我是它的第一個使用者。我⁠拿⁠到⁠了⁠那⁠份⁠工⁠作。然⁠後⁠把⁠它⁠開⁠源⁠了。
</p>
<p align="center">
貼上一個職缺,它在你的機器上告⁠訴⁠你:還⁠有⁠沒⁠有⁠在⁠徵⁠人,適⁠不⁠適⁠合⁠你。<br>
它為你客製履歷、草擬回⁠答。<strong>由⁠你⁠按⁠下⁠送⁠出。</strong>
</p>
<p align="center">
<img src="docs/demo.gif" alt="作者本人在 career-ops 儀表板裡的求職:評過分的職缺清單、標為「不要投」的職缺的紅色計數,接著是一份完整的評估報告" width="800">
</p>
<p align="center"><sub>我自己的求職,進行到一半,介面是西⁠班⁠牙⁠文。</sub></p>
<p align="center">
企業用 AI 篩選候選人。<br>
<strong>我把 AI 交給候選人,讓⁠他⁠們⁠來⁠<em>挑⁠選</em>⁠企⁠業。</strong>
</p>
<p align="center">
六個月後,<strong>我離開了那份工作。</strong><br>
現在我們打造 career-ops,讓⁠你⁠也⁠能⁠上⁠岸。
</p>
<p align="center"><a href="#輪到你了">拿一個職缺試試 ↓</a> · <a href="https://santifer.io/career-ops-system">閱讀完整故事 →</a></p>
<p align="center"><sub>不想用終端機? <a href="https://career-ops.org/waitlist?ref=readme-zh-tw">加入網頁版的候補名單 →</a></sub></p>
<br>
<p align="center"><a href="HIRED.md"><img src="docs/hired-badge.svg" alt="Hired with career-ops: public stories on the record"></a></p>
<p align="center">在我之後來的人,寫下了他們是怎麼拿到 offer 的。</p>
<p align="center">
<a href="HIRED.md"><img src="docs/hired-wall.svg" alt="可以打開閱讀的錄取故事" width="800"></a>
</p>
<p align="center"><sub>每張卡片都是一個可以打開的公開 issue。你也上岸了?<a href="https://github.com/career-ops-hq/career-ops/issues/new?template=i-got-hired.yml">留下你的卡片 →</a></sub></p>
<p align="center">⭐ <strong>如果 career-ops 幫到了你,一⁠顆⁠星就⁠能幫⁠下⁠一⁠個⁠人找⁠到⁠它。</strong></p>
<br>
<p align="center">
<a href="https://wired.com.gr/article/to-ai-ergaleio-pou-fernei-epanastasi-ston-tropo-pou-psachnoume-douleia/" rel="noopener noreferrer nofollow"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/press/wired-dark.svg"><img src="docs/press/wired.svg" alt="WIRED" height="32"></picture></a>
<a href="https://www.businessinsider.com/how-i-built-tool-filter-job-listings-landed-head-ai-2026-4" rel="noopener noreferrer nofollow"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/press/business-insider-dark.svg"><img src="docs/press/business-insider.svg" alt="Business Insider" height="32"></picture></a>
</p>
<p align="center">
<a href="https://vercel.com/open-source-program"><img alt="Vercel OSS Program" src="https://vercel.com/oss/program-badge-2026.svg" height="32"></a>
</p>
<p align="center">
<a href="https://trendshift.io/repositories/25195" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/repositories/25195" alt="GitHub Trending: #1 repository of the day (Trendshift)" width="250" height="55"></a>
<a href="https://www.producthunt.com/products/santifer-io?utm_source=badge-featured&utm_medium=badge" rel="noopener noreferrer"><img src="docs/press/producthunt.svg" alt="Featured on Product Hunt" width="206" height="54"></a>
</p>
## 輪到你了
把你今晚本來打算投的一個職缺貼進來。如果回傳的是<em>不要投</em>,你剛剛把這個晚上贏回來了。如果回傳的是一份計畫,你就知道下一步該做什麼。
```bash
npx @santifer/career-ops init
```
<p align="center"><sub>開源。本機執行。就在你已經在用的 AI CLI 裡。<a href="docs/RUNNING_ON_A_BUDGET.md">包含免費模型和本機模型。</a></sub></p>
## 你不必一個人找工作
按下送出之後的沉默,與你無關。看到同一件事的人夠多,於是把這套實踐寫了下來,只有六行:
> 投得更少,投得更好。訊號勝過數量。證據勝過關鍵字。由人來決定。本機優先。桌子兩邊都有尊嚴。
<p align="center"><a href="https://career-ops.org/manifesto?utm_source=readme"><img src="https://img.shields.io/badge/dynamic/regex?url=https%3A%2F%2Fraw.githubusercontent.com%2Fcareer-ops-hq%2Fcareer-ops%2Fmain%2FSIGNATURES.md&search=n%3A(%5Cd%2B)%5Cs*%24&replace=%241%20signatories&label=THE%20CAREEROPS%20MANIFESTO&color=DD7627&style=for-the-badge&labelColor=2b3137" alt="CareerOps 宣言:即時簽署人數"></a></p>
<p align="center">其中幾位,用他們自己的話。</p>
<p align="center">
<a href="https://career-ops.org/manifesto?utm_source=readme"><img src="docs/manifesto-wall.svg" alt="CareerOps 宣言的三個簽名,用他們自己的話" width="800"></a>
</p>
<p align="center"><sub>每一個簽名都是一次可稽核的提交。<a href="https://career-ops.org/manifesto?utm_source=readme">讀完全部,或加上你的 →</a></sub></p>
<br>
招募不會自己修好。正在經歷它的人可以,而且他們已經在這個房間裡,交換筆記,互相修各自的設定。
<a id="builders"></a>
<p align="center"><a href="CONTRIBUTING.md"><img src="https://warpchart.dev/api/builders?lang=zh-TW" alt="貢獻者 GitHub 頭像組成的動態牆,自 2026年4月 起依加入順序逐一填滿,下一格留空。" width="100%"></a></p>
[修復就是在這裡寫出來的](CONTRIBUTING.md)。是房間,不是俱樂部。**一起來建。**
<p align="center"><a href="https://discord.gg/8pRpHETxa4"><img src="docs/discord-badge.svg" alt="Discord:career-ops 伺服器的即時成員數"></a></p>
## 贊助商
career-ops 對求職者永久免費。這些公司贊助了本專案:
<p align="center">
<a href="https://serpapi.com/career-ops-org" title="SerpApi"><img src="docs/sponsors/serpapi.svg" alt="SerpApi" height="48"></a>
</p>
<p align="center"><strong>SerpApi</strong> · Build a portfolio project with live search data. SerpApi gives developers structured JSON/Markdown from Google Search, Maps, Shopping, and other engines through a simple API call.</p>
> 贊助買到的是清楚標示的曝光,絕不是影響力:再多的錢也改變不了路線圖,也放不進產品裡任何東西。贊助商絕不會出現在評估、排名或推薦中。
## career-ops 為你做什麼
貼上一個職缺。它告訴你這個晚上值不值得。
- **還在徵人嗎?** 在你寫下一個字之前,它先確認這則職缺仍然有效。
- **不是你?** 用你真實的履歷給職缺打分,匹配度弱就叫你跳過。你可以不聽。
- **值得投?** 它起草履歷、求職信和申請答案。你來讀。你來送。
- **該找誰聊?** 它找到那個人,起草那則訊息。它從不替你送出。
- **這些東西都去哪了?** 每一份申請都留在你的機器上。沒有任何東西上傳給我們。
- **我該學什麼?** 連續被拒之後,它說出差距在哪。
最初幾次執行會很粗糙。它還不了解你。跟它聊:你的履歷、你想要什麼、你拒絕什麼。把它當成一個招募顧問的第一週。
第一次啟動時,它會在聊天裡把這些都問一遍。沒有任何需要手動設定的東西。
## career-ops 不做的事
- **自動送出申請。** 它為每個欄位起草答案;你審閱,然後點擊送出。腳本從不發出 POST(`prepare-application.mjs`)。
- **寄送郵件。** 只寫草稿。整個程式碼庫裡沒有任何郵件寄送模組。
- **回傳資料。** 沒有遙測,沒有我們的後端。你的履歷只從你的機器送往你選擇的 AI 供應商,不去任何別的地方。唯一的公開紀錄就是這個儲存庫:`HIRED.md` 和它的 issue。
- **催你申請低於 4.0/5 的職缺。** 它會告訴你別申請。你可以不聽,它會明說。
它會改寫你的履歷,但絕不能捏造。程式碼裡有一道檢查:PDF 裡的數字或事實如果在你的履歷和 `article-digest.md` 裡都找不到,就會被擋下;但它還無法判斷每一處改寫。每份履歷送出前都請自己讀一遍。詳情見 [FAQ](#常見問題faq)。
## 功能特色
| 功能 | 說明 |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **A-H 評估** | 職缺摘要、履歷比對(標註每條要求在這個職缺裡有多重要,以及權重來自職缺描述的措辭、結構還是估算,逐條標註;估算永遠不能進入最高一級)、職級策略、薪酬調查、個人化、面試準備(STAR+R),再加上區塊 G 的職缺可信度檢查(是否仍在徵人、是否為重複刊登:只陳述觀察,不下定論),以及一個工作許可訊號(把明確不提供簽證擔保的職缺描述標記為硬性阻礙) |
| **Human-in-the-Loop** | AI 評估並推薦,你決定並行動。系統從不送出申請:最終決定權永遠在你手上 <!-- hitl: absolute guarantee. Do not add "automatically", "by itself", "without your permission" or any other hedge when translating this row. --> |
| **ATS PDF 產生** | ATS 可讀的履歷,根據你自己的經歷、針對每份職缺描述客製,採用 Space Grotesk + DM Sans 設計 |
| **求職信產生器** | 基於調查的求職信:關鍵字呼應、四個互動式角度提問(為什麼/問題/方法/語氣)、在對話中審核草稿,以及透過與履歷相同的 HTML + Playwright 流程產生 A4 PDF。每次評估自動起草;用 `/career-ops cover` 依需求完成並產生 |
| **履歷之外** | 企業調查([`deep`](modes/deep.md))揭示 AI 策略、近期動向、工程文化,以及你的履歷應該採取的角度。聯絡人探索([`contacto`](modes/contacto.md))找出值得聯絡的招募主管、招募人員或團隊成員,並草擬一則不超過 300 字元、針對聯絡人類型調整過的 LinkedIn 訊息。正式申請郵件草稿([`email`](modes/email.md))把已評估的報告或貼上的職缺描述變成主旨、內文和附件清單,不寄送、不送出、不點擊任何內容。申請讓你排進隊伍,調查讓你獲得對話。 |
| **模式分析** | 拒信模式與各 ATS 管道的推進率(`analyze-patterns.mjs`)、整個求職週期的漏斗統計(`stats.mjs`)、重複刊登偵測,重複刊登可能是幽靈職缺的跡象(`detect-reposts.mjs`) |
<details>
<summary><b>它還能做的所有事</b></summary>
| 功能 | 說明 |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **自動流程** | 貼上一個 URL,獲得完整評估 + PDF + 追蹤紀錄 |
| **面試故事庫** | 跨評估累積 STAR+反思故事:5 到 10 個主故事,可以針對你遇到的行為面試問題靈活調整 |
| **談判話術** | 薪資談判框架、應對地域折價、以競爭 offer 作為籌碼 |
| **申請郵件草稿** | 從報告或貼上的職缺描述產生給招募人員、內推或主動應徵的正式郵件,包含主旨、附件清單、有憑有據的契合點,以及來自你個人資料的聯絡資訊區塊。僅限草稿:career-ops 從不寄送、送出或點擊任何內容。 |
| **求職平台掃描器** | 預先設定 100+ 家企業(Anthropic、OpenAI、ElevenLabs、Retool、n8n…)+ 跨 Ashby、Greenhouse、Lever、Wellfound 的自訂網頁搜尋查詢 |
| **已募資企業探索** | 以審閱為先的 `company:funded` 指令從結構化的公開資料來源列出近期獲得募資的企業與來源診斷,不更動你的資料 |
| **批次處理** | 用無頭 CLI worker(`claude -p` / `opencode run`)並行評估 |
| **Dashboard TUI** | 在終端機裡瀏覽、篩選和排序你的流程 |
| **流程完整性** | 自動合併、去重、狀態正規化、健康檢查 |
| **面試套件** | 按時間區塊安排的準備計畫、附回饋的練習、面試後檢討([`interview/`](modes/interview/README.md)),以及企業警訊偵測器([`interview-redflag`](modes/interview-redflag.md)) |
| **Offer 階段** | 合約閱讀助手:逐條款解讀加上給律師的問題清單([`offer-prep`](modes/offer-prep.md)),以及期望/公告/實際薪資差距分析器(`salary-gap.mjs`) |
| **跟進與回覆** | 跟進節奏計算器與預設提醒(`followup-cadence.mjs`、`followup-seed.mjs`);把雇主回覆歸類為追蹤紀錄更新([`reply-watch`](modes/reply-watch.md)) |
| **外掛系統** | 可選整合(Gmail、Notion、Apify + 社群註冊表),預設關閉;見 [docs/PLUGINS.md](docs/PLUGINS.md) |
</details>
## 運作原理
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/how-it-works-dark.svg"><img src="docs/how-it-works-light.svg" alt="How it works: you paste a job URL or description. Archetype Detection classifies it as LLMOps, Agentic, PM, SA, FDE or Transformation. The A-H Evaluation reads cv.md and covers match, gaps, comp research, STAR stories and legitimacy. It produces a report (reports/*.md), the tailored CV in the format set by cv.output_format — a PDF by default — and a tracker entry (data/applications.md)." width="760"></picture></p>
## 快速開始
**最快的方式,一道指令:**
```bash
npx @santifer/career-ops init
```
> 💡 `npx` 隨 [Node.js](https://nodejs.org) 一起提供:它只執行一次安裝程式,
> 不會全域安裝任何東西。還沒有 Node?先安裝它。
> (已經在用 Claude Code / Codex CLI?那你已經有了。)
這會把最新版本複製到 `./career-ops` 並安裝相依套件。然後:
```bash
cd career-ops
claude # or codex / qwen / opencode / agy / grok — open your AI CLI here
```
**首次啟動時,career-ops 會透過對話引導你完成設定(你的履歷、個人資料和目標職缺)。不需要手動編輯任何東西。**
<details>
<summary><b>想手動設定?(git clone)</b></summary>
```bash
git clone https://github.com/career-ops-hq/career-ops.git
cd career-ops && npm install
npx playwright install chromium # only needed for PDF generation
# On a non-Debian/Ubuntu Linux distro (Fedora, Arch, ...), Chromium's system
# libraries aren't installed by the line above — install them yourself with
# your distro's package manager if PDF generation fails to launch the browser
# (Playwright's own docs list the required libraries per platform).
# 2. Open your AI CLI in this directory. On first launch it walks you
# through setup (your CV, profile and target roles) by chatting
claude # or codex / opencode / qwen / agy / grok
# Then ask your CLI to adapt the system to you:
# "Change the archetypes to backend engineering roles"
# "Translate the modes to English"
# "Add these 5 companies to portals.yml"
# "Update my profile with this CV I'm pasting"
# 3. Start using
# 貼上職缺連結或職缺描述文字,即可觸發 auto-pipeline。
# 其他所有模式,以及如何在你的 CLI 中呼叫它們:見下方「使用方式」。
```
</details>
### 全域安裝
```bash
npm i -g @santifer/career-ops
```
這會全域安裝 `career-ops` 執行檔,讓你不用 `npx` 就能執行 `career-ops init [folder]`。`init` 是它唯一的指令:它只負責建立工作區,之後的一切都在你的 AI 程式碼 CLI 裡進行(見下方「使用方式」),而不是透過這個執行檔。
**該用哪一個?**
- `npx @santifer/career-ops init`:最適合首次使用;會建立一個專用的專案資料夾。
- `npm i -g @santifer/career-ops`:如果你比較想輸入 `career-ops init`,而不是 `npx` 的寫法。它不會增加其他指令。
### 其他執行方式
- **在任何資料夾中,作為 Claude Code 外掛:** [docs/CLAUDE_PLUGIN.md](docs/CLAUDE_PLUGIN.md)。
- **不使用 AI CLI:** 獨立的 Gemini、Ollama 和 OpenAI 相容腳本可以單獨評估一份職缺描述。請見 [docs/SCRIPTS.md](docs/SCRIPTS.md#geminieval--ollamaeval--openaieval)。
> **這個系統就是設計成由你的 AI 程式碼 CLI 自己來客製的。** 模式、原型、評分權重、談判話術:直接請它改就行。它讀取的正是它自己使用的檔案,所以它清楚該改哪裡。
完整安裝指南見 [docs/SETUP.md](docs/SETUP.md);用自訂或本機模型低成本執行 career-ops 的方法見 [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md)(在 Antigravity CLI 免費方案零成本執行見 [docs/FREE_TIER.md](docs/FREE_TIER.md));排程定期掃描和零 token 的「初篩到短名單」作法見 [docs/AUTOMATION.md](docs/AUTOMATION.md);ATS 自動填表流程的細節見 [docs/APPLY_AUTOFILL.md](docs/APPLY_AUTOFILL.md);把 LinkedIn 聯絡人匯出與漏斗中的企業交叉比對見 [docs/LINKEDIN_JOIN.md](docs/LINKEDIN_JOIN.md);常見設定問題的解答見 [docs/FAQ.md](docs/FAQ.md),包括[故事溯源如何防止捏造數字](docs/FAQ.md#why-does-career-ops-refuse-to-use-a-number-from-my-story-bank)。設計原則在 [ARCHITECTURE.md](ARCHITECTURE.md);執行期流程在 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。
## 使用方式
把職缺連結或職缺描述貼到你的 AI CLI 中。career-ops 會檢查附有連結的職缺是否仍在徵才(貼上的文字沒有可檢查的連結),對照你的履歷評分,撰寫報告,客製化你的履歷(預設為 PDF),並在你的追蹤表中新增一列。大多數日子這樣就夠了。其餘一切都是依名稱呼叫的模式。如果無法讀取某則職缺,流程會停下並請你貼上文字。
### 如何呼叫模式
| CLI | 如何呼叫 `scan` |
| --- | --- |
| Claude Code, OpenCode, Antigravity CLI (`agy`), Grok Build CLI | `/career-ops scan` |
| Pi | `/skill:career-ops scan` |
| Codex、Qwen、Cursor 或任何其他受支援的 CLI | 自然語言:「Run the career-ops scan mode」 |
單獨輸入 `/career-ops` 會顯示命令選單(在使用它的 CLI 中)。自然語言在所有受支援的 CLI 中都能用。作為 Claude Code 外掛使用時,指令是 `/career-ops:career-ops`。
它們共用同一個路由器 `.agents/skills/career-ops/SKILL.md` 和同一批 `modes/*.md` 檔案,所以每個 CLI 都以相同方式路由請求(大量使用瀏覽器的模式還需要 Playwright 工具)。Codex 不保證支援斜線命令:請用自然語言提出要求,或用 `codex exec "Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123"` 以無頭方式執行一則提示詞([docs/CODEX.md](docs/CODEX.md))。如何在每個受支援的 CLI 中執行、具備無頭命令的 CLI 所對應的命令,以及 各 CLI 的設定說明,都在 [docs/SUPPORTED_CLIS.md](docs/SUPPORTED_CLIS.md) 中。
### 日常命令
| 命令 | 作用 |
| --- | --- |
| *貼上連結或職缺描述* | 完整流程:職缺是否仍在徵才的檢查(僅限連結)、A-G 評估(高分時另加 H)、報告、客製化履歷(預設 PDF)、追蹤表新增一列 |
| `scan` | 掃描你的求職平台以發現新職缺,並加入收件匣(`data/pipeline.md`) |
| `pipeline` | 處理收件匣中等待的連結(standard 與 premium 層級可能略過明顯不合的) |
| `apply` | 與你一起逐欄填寫申請表。送出前會停下 |
| `tracker` | 每份申請目前的進度 |
| `followup` | 哪些申請該跟進了,並附草稿 |
<details>
<summary><b>所有命令,依求職階段分類</b></summary>
`oferta`、`ofertas` 和 `contacto` 保留原本的西班牙語名稱,意思分別是:offer、多個 offer、聯絡人。
**尋找職缺**
| 命令 | 作用 |
| --- | --- |
| [`scan`](modes/scan.md) | 掃描求職平台並發現新職缺 |
| [`discover`](modes/discover.md) | 把公司名稱清單解析為可掃描的 ATS 招募頁。預設只預覽,僅在加上 `--write` 時才附加到 `portals.yml`(零 token) |
| [`pipeline`](modes/pipeline.md) | 處理收件匣(`data/pipeline.md`)裡待處理的連結 |
| [`triage`](modes/triage.md) | 在完整評估之前,依據 `modes/_brief.md` 快速做一輪是否值得投的初篩(不寫入任何檔案) |
| [`batch`](modes/batch.md) | 用無頭 worker 評估大量職缺(Claude 下並行,其他 CLI 下逐一處理) |
| [`titles`](modes/titles.md) | 根據你的履歷推薦相近的職稱,以擴大搜尋範圍 |
**評估職缺**
| 命令 | 作用 |
| --- | --- |
| *貼上連結或職缺描述* | [Auto-pipeline](modes/auto-pipeline.md):評估 + 報告 + 客製化履歷(預設 PDF) + 追蹤表項目 |
| [`oferta`](modes/oferta.md) | 僅評估,區塊 A 到 G,高分時另加 H(不產生 PDF) |
| [`ofertas`](modes/ofertas.md) | 比較並排序多個職缺 |
| [`deep`](modes/deep.md) | 針對企業的深度調查提示詞 |
| [`eu-swe`](modes/regional/eu-swe.md) | 在準備履歷、申請或面試之前,校準一份歐洲軟體工程職缺的申請 |
**申請**
| 命令 | 作用 |
| --- | --- |
| [`pdf`](modes/pdf.md) | ATS 最佳化履歷,輸出為 PDF |
| [`ats`](modes/ats.md) | 檢查產生的履歷對 ATS 是否友善:評分及可修正的問題 |
| [`text`](modes/text.md) | 客製化的 markdown 履歷(與 `cv.md` 一致,不產生 PDF) |
| [`latex`](modes/latex.md) | 把履歷匯出為 LaTeX/Overleaf 的 `.tex` |
| [`latex-tex`](modes/latex-tex.md) | 就地客製化你自己的 `resume.tex`(需主動啟用;預設仍是 `cv.md`) |
| [`cover`](modes/cover.md) | 求職信,根據貼上的職缺描述或已評估的報告(`cover {slug}`) |
| [`email`](modes/email.md) | 正式的求職郵件草稿。僅限草稿:絕不寄出、提交或點擊 |
| [`contacto`](modes/contacto.md) | 找到用人主管、招募人員或同業,並草擬一則 LinkedIn 訊息 |
| [`apply`](modes/apply.md) | 即時申請助手(使用此儲存庫中的 Playwright)。不會送出 |
**面試**
| 命令 | 作用 |
| --- | --- |
| [`interview-prep`](modes/interview-prep.md) | 針對特定公司的面試準備文件 |
| [`interview/plan`](modes/interview/plan.md) | 為即將到來的面試擬定依時段劃分的準備計畫 |
| [`interview/practice`](modes/interview/practice.md) | 模擬面試,一次一個問題,並給予回饋 |
| [`interview/debrief`](modes/interview/debrief.md) | 面試後檢討:補足不足之處,預測下一輪 |
| [`interview-redflag`](modes/interview-redflag.md) | 到職前分析雇主的警訊 |
**申請之後**
| 命令 | 作用 |
| --- | --- |
| [`tracker`](modes/tracker.md) | 申請狀態總覽 |
| [`followup`](modes/followup.md) | 跟進節奏:標記逾期的申請,產生草稿 |
| [`reply-watch`](modes/reply-watch.md) | 將雇主的回覆分類,並建議更新追蹤表 |
| [`outcome`](modes/outcome.md) | 記錄申請結果並封存相關產出 |
| [`offer-prep`](modes/offer-prep.md) | 與你一起閱讀收到的 offer 或合約:逐條梳理條款,並列出要問律師的問題(不構成法律建議) |
**你的個人資料與履歷**
| 命令 | 作用 |
| --- | --- |
| [`interview`](modes/interview.md) | 資料設定:圍繞你的經歷進行互動式訪談,據此建立履歷與個人資料(不是面試練習) |
| [`intake`](modes/intake.md) | 根據 `documents/` 中的檔案(主履歷、LinkedIn 匯出)建立或充實你的個人資料。未經你確認不會寫入任何內容 |
| [`master-profile`](modes/master-profile.md) | 匯入、審閱並驗證你的 Master Career Profile,並把選定的事實準備成履歷重點 |
| [`add`](modes/add.md) | 向履歷新增專案、論文或職位(擷取、預覽、確認) |
| [`expand`](modes/expand.md) | 根據你的個人資料連結,發現履歷中缺少的能力 |
| [`retro`](modes/retro.md) | 回顧本次工作階段,把你教給它的內容保存為規則(只寫入你接受的) |
**優化你的投遞方向**
| 命令 | 作用 |
| --- | --- |
| [`patterns`](modes/patterns.md) | 分析被拒模式並優化投遞方向 |
| [`calibrate`](modes/calibrate.md) | 檢查你的評估分數能否預測真實結果。僅供參考:絕不更動評分 |
| [`upskill`](modes/upskill.md) | 根據你已評估的所有報告做技能落差分析 |
| [`training`](modes/training.md) | 對照你的 North Star 評估課程或證照 |
| [`project`](modes/project.md) | 評估作品集專案的想法 |
**系統**
| 命令 | 作用 |
| --- | --- |
| [`agent-inbox`](modes/agent-inbox.md) | 把請求排入下一次工作階段的佇列,並在那時處理(`data/agent-inbox.md`)。`inbox` 同樣可用 |
| [`update`](modes/update.md) | 更新 career-ops 系統檔案,附帶 diff 預覽與相容性檢查 |
</details>
## 預設掃描平台
掃描器內建 **100+ 家企業**可直接掃描,以及涵蓋主流求職網站的 **35+ 條搜尋查詢**。把 `templates/portals.example.yml` 複製為 `portals.yml`,再加入你自己的:
**AI 實驗室:** Anthropic、OpenAI、Mistral、Cohere、LangChain、Pinecone
**語音 AI:** ElevenLabs、PolyAI、Parloa、Hume AI、Deepgram、Vapi、Bland AI
**AI 平台:** Retool、Airtable、Vercel、Temporal、Glean、Arize AI
**客服中心:** Ada、LivePerson、Sierra、Decagon、Talkdesk、Genesys
**企業級:** Salesforce、Twilio、Gong、Dialpad
**LLMOps:** Langfuse、Weights & Biases、Lindy、Cognigy、Speechmatics
**自動化:** n8n、Zapier、Make.com
**歐洲:** Factorial、Attio、Tinybird、Clarity AI、Travelperk
**搜尋的求職網站:** 55+ 個供應商模組涵蓋 ATS API、整站資料來源、XML/RSS 來源、markdown 來源和本機解析器。完整表格見[支援的求職網站](docs/SUPPORTED_JOB_BOARDS.md)。
預設情況下 `node scan.mjs`(即 `npm run scan`)信任每個 ATS 資料來源回傳的內容。有些企業在職缺關閉後仍會把過期職缺留在公開 API 裡,這些過期項目可能會混進 `pipeline.md`。加上 `--verify` 可以在 API 階段之後啟動 Playwright,在過期職缺進入流程之前把它們剔除:
```bash
node scan.mjs --verify # zero-token discovery + Playwright liveness check
```
驗證是循序執行的,而且只針對新職缺(去重之後),所以成本是有上限的。
## 儀表板 TUI
內建的終端機儀表板讓你以視覺化方式瀏覽你的流程:
```bash
npm run serve:dashboard # launch the TUI
npm run build:dashboard # optional: build the standalone binary
```
功能:10 個篩選分頁、8 種排序模式、分組/平鋪檢視、延遲載入預覽、行內狀態修改。
還有一個**實驗性的 Web UI**(alpha 版,選用:除非你主動啟動,否則不會執行任何東西):見 [`web/README.md`](web/README.md)。
## 專案結構
```
career-ops/
├── AGENTS.md # Canonical agent instructions (all CLIs)
├── CLAUDE.md # Claude Code wrapper (imports AGENTS.md)
├── CODEX.md # Codex wrapper (imports AGENTS.md)
├── OPENCODE.md # OpenCode wrapper (imports AGENTS.md)
├── GEMINI.md # Legacy no-op guard to avoid Antigravity duplicate context
├── cv.md # Your CV (create this)
├── article-digest.md # Your proof points (optional)
├── config/
│ └── profile.example.yml # Template for your profile
├── modes/ # Skill modes
│ ├── _shared.md # Shared context (customize this)
│ ├── oferta.md # Single evaluation
│ ├── pdf.md # PDF generation
│ ├── cover.md # Cover letter generation
│ ├── email.md # Formal application email drafts
│ ├── scan.md # Portal scanner
│ ├── batch.md # Batch processing
│ └── ...
├── templates/
│ ├── cv-template.html # ATS-optimized CV template
│ ├── portals.example.yml # Scanner config template
│ └── states.yml # Canonical statuses
├── batch/
│ ├── batch-prompt.md # Self-contained worker prompt
│ └── batch-runner.sh # Orchestrator script
├── dashboard/ # Go TUI pipeline viewer
├── data/ # Your tracking data (gitignored)
├── reports/ # Evaluation reports (gitignored)
├── output/ # Generated PDFs (gitignored)
├── fonts/ # Space Grotesk + DM Sans
├── docs/ # Setup, customization, budget guide, architecture
└── examples/ # Sample CV, report, proof points
```
## 外部資料目錄(選用)
預設情況下,使用者層資料(如 `cv.md`、`portals.yml`,以及 `data/`、`reports/`、`output/` 資料夾)位於專案根目錄內。
為了把個人資料和程式碼分開(更方便切換分支、拉取更新或測試多個個人資料),你可以按以下優先順序設定一個外部資料目錄:
1. **環境變數:** 設定 `CAREER_OPS_ROOT` 或 `CAREER_OPS_DATA_DIR` 環境變數:
```bash
export CAREER_OPS_ROOT=~/my-career-data
```
2. **標記檔案:** 在儲存庫根目錄建立一個 `.career-ops-data` 檔案,內容是你的資料目錄路徑。
3. **預設:** 使用儲存庫根目錄。
解析完成後,所有使用者檔案都相對於該資料夾解析和寫入,而提示詞檔案和腳本仍然相對於儲存庫解析。
- **覆寫追蹤檔:** 你也可以設定 `CAREER_OPS_TRACKER` 直接覆寫申請追蹤檔的路徑。
- **寫入:** 所有寫入操作(如合併)都以 `{DATA_ROOT}/data/applications.md` 為標準目標。
- **掃描器設定:** `portals.yml` 在 `{DATA_ROOT}/portals.yml` 讀取和驗證,所以 `node validate-portals.mjs` 檢查的正是 `scan.mjs` 讀取的那個檔案。
- **產生的文件:** 客製履歷和求職信寫入 `{DATA_ROOT}/output/`,把它們連結到報告的 PDF 清單位於 `{DATA_ROOT}/data/pdf-index.tsv`。在未設定 `CAREER_OPS_TRACKER` 時,限定這些寫入範圍的追蹤工作區是資料根目錄,而不是程式碼的 checkout。
- **追蹤檔覆寫下的 PDF:** `generate-pdf.mjs` 會先解析 `CAREER_OPS_TRACKER`,再推導工作區,所以設定了覆寫時,工作區就是存放該追蹤檔的資料夾(如果追蹤檔位於 `data/` 資料夾中,則是它的上一層資料夾)。這時履歷的 HTML 和每個 PDF 都必須位於該工作區內,清單也會移到它的 `data/pdf-index.tsv`。求職信仍以 `{DATA_ROOT}/output/` 為目標,所以當該資料夾不在追蹤檔的工作區內時,求職信會被拒絕寫入。
- **程式碼層維持不動:** `node_modules/`、`providers/`、`modes/` 以及腳本本身一律相對於儲存庫解析,從不相對於資料根目錄。
Go 版儀表板 TUI、Node.js 腳本和 AI 代理模式都會自動遵循這個解析層級。
## 技術堆疊





- **代理**:具備共用 skill 和模式的 AI 程式碼 CLI(`AGENTS.md` + 各 CLI 的包裝)
- **PDF**:Playwright + HTML 範本
- **求職信**:HTML 範本 + Playwright(A4 PDF,與履歷相同的流程)
- **掃描器**:Playwright + Greenhouse API + WebSearch
- **儀表板**:Go + Bubble Tea + Lipgloss(Catppuccin Mocha 主題)
- **資料**:Markdown 表格 + YAML 設定 + TSV 批次檔案
<p align="center">
<a href="https://github.com/career-ops-hq/career-ops/releases/latest"><img src="docs/npm-badge.svg" alt="Latest release"></a>
</p>
<p align="center">
<a href="https://claude.com/claude-code"><img src="https://img.shields.io/badge/Built_with-Claude_Code-000?style=for-the-badge&logo=anthropic&logoColor=white" alt="Built with Claude Code"></a>
</p>
<p align="center">
<sub>也可以在任何遵循 agent skill 標準的 CLI 中執行。見<a href="docs/SUPPORTED_CLIS.md">支援的 CLI</a>。</sub><br>
<img src="https://img.shields.io/badge/Claude_Code-000?style=flat&logo=anthropic&logoColor=white" alt="Claude Code">
<img src="https://img.shields.io/badge/OpenCode-111827?style=flat&logo=terminal&logoColor=white" alt="OpenCode">
<img src="https://img.shields.io/badge/Antigravity_CLI-4285F4?style=flat&logo=google&logoColor=white" alt="Antigravity CLI">
<img src="https://img.shields.io/badge/Codex-412991?style=flat&logo=openai&logoColor=white" alt="Codex">
<img src="https://img.shields.io/badge/Qwen-615CED?style=flat" alt="Qwen">
<img src="https://img.shields.io/badge/Kimi-FF4B4B?style=flat" alt="Kimi">
<img src="https://img.shields.io/badge/GitHub_Copilot-000?style=flat&logo=githubcopilot&logoColor=white" alt="GitHub Copilot">
<img src="https://img.shields.io/badge/Grok_Build_CLI-000?style=flat&logo=x&logoColor=white" alt="Grok Build CLI">
<img src="https://img.shields.io/badge/Pi-4B3F72?style=flat" alt="Pi">
<br>
<img src="https://img.shields.io/badge/Node.js-339933?style=flat&logo=node.js&logoColor=white" alt="Node.js">
<img src="https://img.shields.io/badge/Go-00ADD8?style=flat&logo=go&logoColor=white" alt="Go">
<img src="https://img.shields.io/badge/Playwright-2EAD33?style=flat&logo=playwright&logoColor=white" alt="Playwright">
<img src="https://img.shields.io/badge/Bubble_Tea-FF75B5?style=flat&logo=go&logoColor=white" alt="Bubble Tea">
<img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT">
<a href="TRADEMARK.md"><img src="https://img.shields.io/badge/Trademark-Policy-blue.svg" alt="Trademark Policy"></a>
</p>
## 同樣開源
- **[cv-santiago](https://github.com/santifer/cv-santiago)**:作品集網站(santifer.io),附 AI 聊天機器人、LLMOps 儀表板和案例研究。如果你需要一個配合求職展示的作品集,fork 它,改成你自己的。
## 常見問題(FAQ)
**career-ops 是什麼?**
career-ops([career-ops.org](https://career-ops.org),也稱 **careerops**) 是一個開源的 AI 求職工具,在你的 AI 程式碼 CLI(Claude Code、Codex、OpenCode 等)裡於本機執行,把每一個決定都留給你。它依你的履歷評估職缺、產生適配 ATS 的 PDF、找出該聯絡的對象,並在一個地方追蹤所有進度:最終決定權永遠在你手上。它是 [CareerOps 宣言](https://career-ops.org/manifesto)的第一個參考實作。
**客製化履歷會捏造內容嗎?**
不應該,提示詞裡也這麼寫:只改寫,絕不捏造。`generate-pdf` 會擋下數字或事實在你的資料來源中找不到的履歷,除非你傳入 `--skip-fact-check`。`pdf` 模式還會執行 `cv-title-check.mjs`:它依公司和日期,把客製化履歷中的每個職稱與 cv.md 中同一份工作的職稱比對,有不同就請你決定保留還是改回。它只提醒、不阻擋,因為調整職稱的寫法有時是你自己的選擇。目前還沒有任何檢查評判改寫:[#1411](https://github.com/career-ops-hq/career-ops/issues/1411)(不通過即阻止的真實性檢查)在追蹤這一點。在此之前,每份履歷送出前都請自己讀一遍。[法律聲明](LEGAL_DISCLAIMER.md) 用更長的篇幅說了同樣的話。
**我可以免費執行 career-ops,或改用較便宜/本機的模型嗎?**
可以。career-ops 不綁定特定 CLI,也能跑在免費與本機模型上(OpenRouter 的免費模型、Ollama,或任何相容 OpenAI 的端點),所以你不必被付費訂閱綁住。完整設定見 [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md)。
**我已經付費訂閱 Claude Pro/Max,為什麼 career-ops 還在燒 API 額度?**
因為環境變數中的 `ANTHROPIC_API_KEY` 優先於你已登入的訂閱:CLI 會改用這把金鑰,並按 token 計費。執行 `echo $ANTHROPIC_API_KEY`,若有印出任何內容,就把它從 shell 設定檔移除、重開終端機並執行 `/login`。批次模式是例外,因為 `claude -p` 的 worker 不會使用互動式登入:執行一次 `claude setup-token`,把結果匯出為 `CLAUDE_CODE_OAUTH_TOKEN`。完整步驟見 [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md#2b-already-paying-for-a-subscription-make-sure-you-are-using-it)。
**career-ops 支援哪些 AI CLI?**
career-ops 透過開放的 Agent Skill Standard 跑在各主流 AI 程式碼 CLI 上(Claude Code、Codex、Gemini / Antigravity、OpenCode、Grok、Qwen 等),因此不會被單一廠商綁死。你手上已經有的 CLI 就能直接用。
**要怎麼在 Windows 上安裝 career-ops?**
career-ops 可以在 Windows 上執行。平台相關的設定和已知的坑(Git Bash 偵測、行尾符號、工作排程器)在 [docs/WINDOWS.md](docs/WINDOWS.md)。如果安裝過程中技能因 symlink 錯誤而載入失敗,解法在 [docs/FAQ.md](docs/FAQ.md)。完整步驟見 [docs/SETUP.md](docs/SETUP.md)。
**career-ops 會自動幫我投遞職缺嗎?**
不會。career-ops 是篩選器,不是亂槍打鳥的自動投遞工具。AI 負責評估、排序與草擬;審閱與決定由你來做。它會草擬、填寫,但從不送出。由你按下送出。這種保留人工把關的設計,正是整套系統的重點。
**career-ops 是免費且開源的嗎?**
是。career-ops 免費且開源,而且對求職者而言永遠都會是。它是 [CareerOps 宣言](https://career-ops.org/manifesto)的第一個參考實作。讀一讀,如果它說中了你的想法,就簽署它。
## 關於作者
我是 [Santiago Fernández de Valderrama Aparicio](https://santifer.io/about)(santifer),曾經是創業者:我創辦並賣掉了一家至今仍以我的名字營運的公司。我打造 career-ops 是為了管理自己的求職,它奏效了:它幫我拿到了一個 Head of Applied AI 的職位。六個月後,我離開了那個職位,全職投入 career-ops 的開發。
想知道這麼大的儲存庫,是怎麼由一支 AI 代理團隊維護、每次合併都由人來決定的?讀一讀 [Agentic maintenance: how career-ops is run by a fleet of AI agents](https://santifer.io/ai-agent-fleet)。
我的作品集和其他開源專案 → [santifer.io](https://santifer.io)
Wikidata:[Santiago Fernández de Valderrama Aparicio](https://www.wikidata.org/wiki/Q138710224) · [career-ops](https://www.wikidata.org/wiki/Q139007988)。
## 免責聲明
**career-ops 是一個在本機執行的開源工具,不是託管服務。** 使用本軟體即表示你確認:
1. **你掌控自己的資料。** 你的履歷、聯絡方式和個人資料留在你的機器上,直接傳送給你選擇的 AI 供應商(Anthropic、OpenAI 等)。我們不收集、不儲存、也無法存取你的任何資料。
2. **你掌控 AI。** 預設提示詞指示 AI 不要自動送出申請,但 AI 模型可能出現無法預測的行為。如果你修改了提示詞或使用其他模型,風險自負。**送出前務必檢查 AI 產生內容的正確性。**
3. **你遵守第三方條款。** 你必須按照所互動求職平台(Greenhouse、Lever、Workday、LinkedIn 等)的服務條款使用本工具。不要用本工具向雇主發送垃圾訊息或衝擊 ATS 系統。
4. **不作任何保證。** 評估是建議,不是事實。AI 模型可能虛構技能或經歷。作者不對就業結果、被拒的申請、帳號限制或任何其他後果負責。
完整內容見 [LEGAL_DISCLAIMER.md](LEGAL_DISCLAIMER.md)。本軟體依據 [MIT 授權](LICENSE)「按原樣」提供,不附帶任何形式的保證。
## 貢獻者
<a href="https://github.com/career-ops-hq/career-ops/graphs/contributors">
<img src="https://contrib.rocks/image?repo=career-ops-hq/career-ops&v=2" />
</a>
每一位貢獻過程式碼、文件、翻譯或測試的人都列在
[CONTRIBUTORS.md](CONTRIBUTORS.md) 裡,包括上面的圖表無法呈現的
非程式碼貢獻。
用 career-ops 找到工作了?[分享你的故事!](https://github.com/career-ops-hq/career-ops/issues/new?template=i-got-hired.yml)
## 授權條款與商標
程式碼以 [MIT](LICENSE) 授權發布。「career-ops」的名稱和
品牌受[商標政策](TRADEMARK.md)約束:對社群使用寬鬆,
對商業產品命名和背書保留權利。
## Star 歷史
<p align="center">
<a href="https://warpchart.dev/hq">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://warpchart.dev/api/chart?theme=dark&v=3">
<img alt="Live star telemetry of career-ops-hq/career-ops" src="https://warpchart.dev/api/chart?theme=light&v=3" loading="lazy">
</picture>
</a>
</p>
<p align="center"><sub>由 <a href="https://santifer.io">Santiago Fernández de Valderrama Aparicio</a>(<a href="https://github.com/santifer">@santifer</a>)建立並維護</sub></p>
## 聯絡我
[](https://santifer.io)
[](https://linkedin.com/in/santifer)
[](https://x.com/santifer)
[](https://discord.gg/8pRpHETxa4)
[](mailto:hi@santifer.io)