一言でいうと:Claude Codeでコードを書いてるのに、仕事探しで使わないのはもったいなくない? Career-Ops は、AIプログラミングCLIを就職活動の指揮官に変えるツールです。JDのURLを貼り付けるだけで、応募先を自動評価し、ATS向けの履歴書を生成し、進捗まで追跡できます。作者自身がこれで 740+ 件のオファーを選別し、100+ 通りのカスタム履歴書を作って、最終的に Head of Applied AI に就任しています。
プロジェクト概要
Career-Ops(別名:careerops)は、AI駆動の就職活動パイプラインで、GitHubは santifer/career-ops、MITライセンスです。中核となる狙いは次の通りです。
あらゆるAIプログラミングCLIを、“就職活動の完全なコマンドセンター”に変えること。
これは「また別の“AIで履歴書を改良する”」ツールでも、「大量応募ロボ」でもありません。Career-Opsの設計思想は 引き算:数百のオファーの中から、本当に応募する価値がある数件を、A-Fの採点+6つの評価軸+ATS最適化PDF+完全自動の追跡で絞り込みます。
中核機能(15個の slash command):
| シーン | コマンド | 説明 |
|---|---|---|
| JD URLを貼る | /career-ops | 自動パイプライン(評価+レポート+PDF+tracker) |
| 単体評価 | /career-ops evaluate | A-Fの採点+6つの分析軸 |
| 複数比較 | /career-ops compare | 複数オファーの並べ替え |
| 募集をスキャン | /career-ops scan | 45+の事前設定企業、Ashby/Greenhouse/LeverのAPIで実行 |
| バッチ評価 | /career-ops batch | 並列で claude -p workers を回す |
| PDF生成 | /career-ops pdf | ATS最適化履歴書(Space Grotesk + DM Sans) |
| LaTeX書き出し | /career-ops latex | Overleaf向けの .tex |
| 応募追跡 | /career-ops tracker | ステータス全体の一覧 |
| 応募フォーム入力 | /career-ops apply | AIがフォーム補助(Submitは押さない) |
| 深掘り調査 | /career-ops deep | 企業調査 |
| 面接準備 | /career-ops interview | 企業専用のSTAR+Rストーリー |
| LinkedInでの接触 | /career-ops contact | 人を探してメッセージを下書き |
| リプレイ(復習)モード | /career-ops patterns | 拒否パターン分析、勝ち筋の最適化 |
| フォローアップのタイミング | /career-ops followup | フォローアップのスケジュール |
| コース/プロジェクト評価 | /career-ops training / project | 自己改善の道筋 |
対応するAIプログラミングCLI:Claude Code / OpenCode / Gemini CLI / Codex / Qwen / GitHub Copilot / Kimi —— open agent skill standard に従っていればOKです。
多言語対応:デフォルトは英語。ほかにドイツ語(modes/de/)/フランス語(modes/fr/)/日本語(modes/ja/)/トルコ語(modes/tr/)/簡体字中国語(README.cn.md)/繁体字中国語(README.zh-TW.md)。
実績:作者 santifer はこれで 740+ 件のオファーを評価し、100+ 通りのカスタム履歴書を生成して、最終的に Head of Applied AI のオファーを獲得しています。
難易度/所要時間/得られるもの
- 難易度:⭐⭐(中程度。Claude CodeのようなAIプログラミングCLIを使える必要あり)
- 所要時間:初回オンボーディング 30〜60分(cv.md準備+profile設定含む)
- 得られるもの:
- 実際に使えるAI就職活動パイプラインを通す
- 「User Layer vs System Layer」のエージェント設計を理解する
- A-Fの採点+STAR+Rストーリーで精密に応募する力を身につける
- WIRED / Business Insiderで報じられたことがあるオープンソースプロジェクトの組み方が分かる
- ついでに15個の slash command をポケットに入れて、就職活動中毎日使う
対象読者ペルソナ
- 求職中/転職中/チャンスを探している開発者
- すでに Claude Code / OpenCode / Gemini CLI のユーザー
- 「大量応募」から「精密応募」に切り替えたい。ゴミ同然のオファーに時間を浪費したくない
- 「7k+スター」のプロダクション級AIエージェントがどんなものか知りたい
TIP
就職活動で一番お金が飛ぶのはトークンです。Career-Opsのbatchモードで10+件の評価を回すのは最高に気持ちいい。でもClaude / Anthropicの公式APIで100件分のオファーを走らせると、1晩の請求が$20〜40。1か月で「四桁のトークンコスト」も普通に起こります。
私のつなぎ方(共有であって推奨ではありません): Defapi を使い、Anthropic互換プロトコルで接続します。Base URLは1行変えるだけでOKです:
# たとえばClaude Codeを使っているなら、~/.claude/settings.json か env で変更
ANTHROPIC_BASE_URL=https://api.defapi.org
ANTHROPIC_API_KEY=sk-xxxxx # defapi.orgの管理画面で取得
Defapiのモデルは基本的に、3つの主流プロトコル — v1/chat/completions(OpenAI)/v1/messages(Anthropic)/v1beta/models(Gemini) — すべてに互換です。エージェント側はコード変更ほぼゼロで、評価用プロンプト/STARストーリー/trackerのスキーマもそのまま。モデル自体は同じものを使いながら、調達コストが少し下がるだけなので、就職活動の1か月トークン請求が**実際に半額(腰斬)**になるのは確かです。以降のFAQ Q5で詳しく展開します。
コア依存関係と環境
最低要件:
| プロジェクト | 要件 |
|---|---|
| Node.js | 20+ |
| AIプログラミングCLI | 少なくとも1つ(Claude Code / OpenCode / Gemini CLI / Codex / Qwen / Copilot) |
| Playwright | Chromiumブラウザ(PDF生成に必要) |
| OS | macOS / Linux / Windows(WSL推奨) |
任意/強化:
| プロジェクト | 用途 |
|---|---|
| Go 1.21+ | TUI Dashboardを実行 |
| Google AI Studio API Key | gemini-eval.mjs という独立スクリプトを実行(無料枠) |
| Chromiumブラウザ | オファーがまだ生きているか検証(Playwrightが自動でセットアップ) |
| さまざまなLLM API Key | Claude / OpenAI / Anthropicのプロトコルに対応していればOK |
TIP
Claude Maxのサブスクが必須というわけではありません。Career-Opsは「LLMプロトコル駆動」なので、v1/messagesまたはv1/chat/completionsに互換するAPIなら接続できます(具体的なつなぎ方は、上の「対象読者」セクション後のTIP参照)。
完全なプロジェクト構造ツリー
career-ops/
├── AGENTS.md # Agent共通の指示(CLIを跨いで対応)
├── CLAUDE.md # Claude Code専用(AGENTS.mdをimport)
├── GEMINI.md # Gemini CLI専用
├── cv.md # あなたの履歴書(あなたが作成、重要ファイル)
├── article-digest.md # あなたのハイライトの根拠(任意)
├── config/
│ └── profile.example.yml # あなたのペルソナテンプレート
├── modes/ # 15個のskill mode
│ ├── _shared.md # システム層で共有されるコンテキスト
│ ├── _profile.template.md # ユーザー層のカスタマイズ(個人のarchetypeを置く)
│ ├── oferta.md # 1件のオファー評価
│ ├── pdf.md # PDF生成
│ ├── scan.md # 募集のスキャン
│ ├── batch.md # バッチ処理
│ ├── auto-pipeline.md # URL → 評価+PDF+tracker
│ ├── de/ # ドイツ語モード
│ ├── fr/ # フランス語モード
│ ├── ja/ # 日本語モード
│ └── tr/ # トルコ語モード
├── templates/
│ ├── cv-template.html # ATS最適化CVテンプレート
│ ├── cv-template.tex # LaTeXテンプレート
│ ├── portals.example.yml # 45+の事前設定企業
│ └── states.yml # 応募状態の辞書
├── data/ # 応募データ(gitignore)
│ ├── applications.md # メイン追跡表
│ ├── pipeline.md # 処理待ちのURL受け皿
│ ├── scan-history.tsv # スキャンの重複除去
│ └── follow-ups.md # フォローアップ履歴
├── reports/ # 評価レポート(gitignore)
├── output/ # 生成されたPDF(gitignore)
├── jds/ # JDテキストを保存(任意)
├── interview-prep/ # 面接準備
│ ├── story-bank.md # 累積されたSTAR+Rストーリー
│ └── {company}-{role}.md # 企業専用インサイト
├── batch/
│ ├── batch-prompt.md # worker用プロンプト
│ ├── batch-runner.sh # オーケストレーション用スクリプト
│ └── tracker-additions/ # メイン追跡表へ統合待ちの追記
├── dashboard/ # Go TUI(Bubble Tea)
│ ├── main.go
│ └── internal/
├── fonts/ # Space Grotesk + DM Sans
├── providers/ # LLMプロバイダの設定
├── docs/ # 多言語ドキュメント+メディア掲載
├── examples/ # サンプルCV/レポート/ハイライト
└── *.mjs # スキャン/検証/統合/ヘルスチェック用スクリプト
ユーザーとして触るのは cv.md/config/profile.yml/modes/_profile.md/portals.yml の4つだけです — これが User Layer で、システム更新では触りません。ほかはすべてAgentに任せます。
手順(ステップごと)
ステップ1:クローン+インストール
git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
npx playwright install chromium # PDF生成に必要
WARNING
npx playwright install chromium はスキップしないでください。後の /career-ops pdf はPlaywrightでレンダリングするため、Chromiumが無いと「browser not found」となります。
ステップ2:ヘルスチェック
npm run doctor
Node.jsのバージョン、Playwright、重要ファイル、ディレクトリの権限を検証します。失敗したら、医者(doctor)が不足を教えてくれるので直してからもう一度実行してください。
ステップ3:あなたの cv.md を作成
これは パイプライン全体の起点です。これが無いとAgentはオファーを評価できません。
プロジェクトのルートディレクトリに cv.md を作成します:
# Your Name
**Email:** [email protected]
**Location:** Berlin, Germany (CET)
**LinkedIn:** linkedin.com/in/you
**GitHub:** github.com/you
## Summary
Senior backend engineer with 6 years building distributed systems...
(目標:2〜3段落。"何をしてきたか+強みの一〜二点"を書いてください)
## Experience
### Staff Engineer — Company A (2023 - Present)
- Xの移行を主導し、Zを40%削減
- (可能な限り数字を入れる。この部分はAgentがJDに合わせるのに使います)
### Senior Engineer — Company B (2020 - 2023)
- ...
## Education
...
## Skills
Backend: Go, Python, PostgreSQL, Kafka
AI/ML: PyTorch, LangChain, RAG
...
TIP
自分で書きたくない? Claude Codeを起動したら、Agentに「古い履歴書を貼る」「LinkedInのURLはこちら」「口頭で言うから書いて」など伝えれば、Agentが cv.md に変換してくれます。オンボーディングの3つの道筋は、READMEにプロンプトのヒントがあります。
ステップ4:config/profile.yml を設定
cp config/profile.example.yml config/profile.yml
config/profile.yml を開いて、以下を埋めます:
personal:
name: "Your Name"
email: "[email protected]"
location: "Berlin, Germany"
timezone: "CET"
targeting:
roles:
- "Senior Backend Engineer"
- "Staff Engineer"
- "AI Platform Engineer"
comp_target:
base_min: 130000
base_target: 160000
currency: "EUR"
remote_preference: "remote-first"
deal_breakers:
- "no on-call"
- "no Java"
- "no < 20 person startups"
# 中国語 / ドイツ語 / フランス語 / 日本語 / トルコ語のモードを使うなら、この行を追加
# language:
# modes_dir: modes/de
WARNING
modes/_shared.md を手で編集しないでください。システム更新で上書きされます。個人のarchetype/交渉トーク/希望年収などは、すべて modes/_profile.md または config/profile.yml に書き込みます。これはREADMEで繰り返し強調されている Data Contract のルールです。
ステップ5:portals.yml の設定
cp templates/portals.example.yml portals.yml
デフォルトで 45+ 企業 と 19個の検索クエリ が入り、以下をカバーします:
# AI Labs
- anthropic
- openai
- mistral
- cohere
# Voice AI
- elevenlabs
- vapi
- deepgram
# AI Platforms
- retool
- airtable
- vercel
- temporal
自分が注目する企業を追加したい場合は、portals.yml に追記するだけです。求人ボードのカバー範囲は Ashby / Greenhouse / Lever / Wellfound / Workable / RemoteFront です。
ステップ6:Agentに「Onboard」を手伝わせる
# まず、あなたが入れているAI CLIを1つ選ぶ
claude # Claude Code
# または
gemini # Gemini CLI
# または
opencode # OpenCode
# または
codex # Codex
CLIでこう言います:
career-opsをセットアップして。クローンしたばかりで、cv.mdとconfig/profile.ymlはどちらも埋めてあります。
オンボーディングが完全か、足りないものがあるか確認してください。
Agentは一度 起動時チェック を実行します:
cv.mdはある? ✅config/profile.ymlは本物?(.exampleではない) ✅modes/_profile.mdは_profile.template.mdからコピーされている? ⚠️portals.ymlは本物?(.exampleではない) ✅
どれかが ❌ なら ガイドモード に入り、1対1で不足を埋めるのを手伝ってくれます。
TIP
最初にAgentを走らせると、最初に「最も誇らしい職業上の達成は何?」「譲れない条件(deal-breaker)は?」「あなたのスーパーパワーは何?」と主導で聞いてきます。5分だけ真剣に答えてください。この内容は modes/_profile.md に反映され、以降の評価スコアの精度はそこにかかっています。最初の1週間は新しい採用担当者をオンボーディングしている感じで、2週目には、ほとんどの人間のrecruiterよりあなたを理解しているはずです。
ステップ7:初回の評価
JD URLをAgentに貼ります:
/career-ops https://jobs.anthropic.com/staff-software-engineer-applied-ai
Agentは完全自動パイプラインを実行します:
- Archetype検出 — LLMOps / Agentic / PM / SA / FDE / Transformation に分類
- A-F評価 — 6軸(Role summary / CV match / Level strategy / Comp research / Personalization / Interview prep)
- レポート生成 —
reports/001-anthropic-2026-06-09.mdに出力 - PDF生成 — PlaywrightでATS履歴書をレンダリングし、
output/001-anthropic-cv.pdfを出力 - trackerに書き込み —
data/applications.mdに1行追加 - パイプライン完全性の更新 —
node verify-pipeline.mjsを実行してチェック
30〜60秒程度で、完全な評価レポートとATS履歴書PDFが表示されるはずです。
WARNING
最初の評価スコアは正確になりません。システムがまだあなたを理解していないため、高すぎたり低すぎたりしがちです。焦らず、3〜5件回したら、結果に応じてAgentに「このスコアは高すぎる(理由:XX)」/「XXの経験があると言ってない」などフィードバックします。Agentは学んだ内容を modes/_profile.md に書き込みます。使うほど精度が上がります。
ステップ8:初回のスキャン
/career-ops scan
または同等のコマンド:
node scan.mjs # トークン不要、純粋にAPIで取得
node scan.mjs --verify # API+Playwrightで二次検証し、期限切れを除外
45+の事前設定企業と19の検索クエリで一回スキャンすると、通常200〜500件の新しい求人が見つかり、そのまま data/pipeline.md の受け皿に入ります。その後、claude -p workers を並列で回して評価すれば、1晩で100+件のオファー処理も夢ではありません。
ステップ9:TUI Dashboardを起動(任意)
ターミナルUIで進捗を見たいなら:
cd dashboard
go build -o career-dashboard .
./career-dashboard --path ..
6つのフィルタータブ、4種類のソートモード、グループ/フラット表示、lazy-loadedプレビュー、選択すると即ステータス変更。Catppuccin Mochaのテーマで見た目も良いです。
ステップ10:システムを更新(重要!)
Career-Opsは進化が速く、数週間ごとに新しいmodeや新しい企業設定が入ります。
# プロジェクトのルートディレクトリで、Agentに確認させる
claude # 「career-opsに新しいバージョンがあるか見て」と伝える
Agentは自動で node update-system.mjs check を走らせ、JSONで出力します。出力はだいたいこんな感じ:
{"status": "update-available", "local": "1.3.0", "remote": "1.4.0", "changelog": "..."}
さらに「v1.3.0 → v1.4.0 が利用可能。あなたのデータ(CV/profile/tracker/reports)は触らない。更新しますか?」と教えてくれます。更新するなら:
node update-system.mjs apply # 更新
node update-system.mjs rollback # 気に入らなければロールバック
よくある質問のトラブルシューティング
Q1: cv.md が見つからない/Agentがオンボーディングで止まる
最も多い原因は、cv.md をプロジェクトのルートディレクトリに置いていないことです:
# ルートにあるか確認
ls -la cv.md
# -rw-r--r-- cv.md が見えるはず
# なければ作成(ルートで)
cd career-ops
touch cv.md
# その後内容を埋める
Q2: PDF生成に失敗し、「browser not found」になる
Playwrightが未インストール、またはChromiumが未インストールです:
npx playwright install chromium
# 国内ネットが遅いならミラーを追加
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install chromium
Q3: 評価スコアが高すぎる/低すぎる
1週目はだいたいこうなります。修正:
- 評価を3〜5回多めに回して、都度Agentに「このスコアは納得できない。理由はXX」とフィードバックする
- Agentは学んだ内容を
modes/_profile.mdに書き込む modes/_profile.mdの補完内容が正しいか重点的に見る:希望年収の下限/リモートの好み/役割の定位/逆条件(反対ケース)
重要: パーソナライズされた内容は
modes/_profile.mdまたはconfig/profile.ymlに書き、modes/_shared.mdは編集しないでください。こちらはシステム更新で上書きされます。
Q4: WebSearch / WebFetch でオファーの精度は合っている?
合いません。Career-Ops内のルールでは オファーがまだ有効かはPlaywrightで必ず検証する必要があります:
# slash commandで実行すると内部でPlaywrightが回る
/career-ops verify --url <JD_URL>
バッチモード(
claude -p)ではPlaywrightが使えないため、**Verification:** unconfirmed (batch mode)と表示されます。手動で確認が必要です。
Q5: バッチ評価でtoken消費が爆発する
100+件のオファー評価を回すと、1晩のtoken請求が$20を軽く超えることがあります。修正は3段階:
- バッチ数を減らす — 一度に10〜20件にする。100+を一気に流さない
- ローカルモデルで代替 —
ofertas(比較)/tracker/pdfのような構造化タスクはローカルの小型モデルに置き換え可能 - Defapiの半額APIにつなぐ — プロトコルは完全互換。公式と同じモデルを使いつつ、毎月の請求が直に腰斬(具体的な設定は「対象読者」段落後のTIP参照)
Q6: ドイツ語/フランス語/日本語/トルコ語のモードに切り替えたい
# 1. config/profile.ymlを編集
language:
modes_dir: modes/de # または fr / ja / tr
またはAgentに「ドイツ語モードで動かして」と伝えれば、Agentは modes/de/ 配下の評価ロジックに切り替えます(DACH市場の 13. Monatsgehalt/Probezeit/AGG/Tarifvertrag といったローカルな語彙を含む)。
WARNING
modes/de/ に切り替えると、英語の求人に応募するときもドイツ語評価が走ります。ドイツ語求人にしか応募しないなら別ですが、そうでなければデフォルトの英語モードのままにし、ドイツ語求人に応募する時だけ手動で切り替えてください。
Q7: 状態の項目に **Applied** みたいな書式付きの汚れたデータが出る
trackerの状態が手動で太字にされています。修正:
node normalize-statuses.mjs # 状態の正規化
node dedup-tracker.mjs # 重複除去
node verify-pipeline.mjs # 健康チェック
その後 templates/states.yml を編集して、canonical(正規の)状態に合わせればOKです。
発展読書/次のステップ
- User Layer vs System Layer:これがCareer-Opsで一番面白い工学的な設計です。
modes/_profile.md(ユーザー)はmodes/_shared.md(システム)に上書きされません。オンボーディングのパーソナライズはすべて、100回のシステム更新でも消えません。全体像を掴むにはDATA_CONTRACT.mdを読むのがおすすめです - archetypeを変更:Agentに「change the archetypes to data engineering roles」と言うと、
modes/_shared.mdではなくmodes/_profile.mdを更新します - 多言語切り替え:ドイツ/フランス/日本/トルコの求人に応募するときは
modes/{de,fr,ja,tr}/を切り替えます。評価ロジックが自動でローカライズされます(CDI/賞与/通勤手当などの現地の語) - TUI Dashboardの発展:dashboardはGo+Bubble Tea+Lipglossで書かれていて、Catppuccin Mochaの配色。ソースは
dashboard/internal/にあり、カスタムフィルター/ソートを追加したいならそこを直接変更すればできます - STAR+Rストーリー・バンク:
interview-prep/story-bank.mdが、評価を跨いであなたの「Situation + Task + Action + Result + Reflection」ストーリーを蓄積します。3〜5件の評価の後には、どんな行動面接にも対応できるストーリーが5〜10本用意されます - fork用の一緒に使えるポートフォリオ:作者のポートフォリオもオープンソースです — santifer/cv-santiago。AIチャットボット+LLMOpsのボード+ケーススタディがあり、forkして自分用に改造できます
GitHubリポジトリ: santifer/career-ops 。多言語ドキュメントは README.{cn,es,ja,ko-KR,pt-BR,ru,ua,zh-TW}.md にあります。設計思想は DATA_CONTRACT.md を見てください。メディア掲載は docs/press/、ロードマップは ROADMAP.md(プロジェクト内で見つからなければ、Agentに「show me your roadmap」と聞けばOK)。