Career-Ops 入門:AIエージェントに700+件の求人を選別させ、100+件のカスタム履歴書を生成

June 9, 2026

一言でいうと: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 evaluateA-Fの採点+6つの分析軸
複数比較/career-ops compare複数オファーの並べ替え
募集をスキャン/career-ops scan45+の事前設定企業、Ashby/Greenhouse/LeverのAPIで実行
バッチ評価/career-ops batch並列で claude -p workers を回す
PDF生成/career-ops pdfATS最適化履歴書(Space Grotesk + DM Sans)
LaTeX書き出し/career-ops latexOverleaf向けの .tex
応募追跡/career-ops trackerステータス全体の一覧
応募フォーム入力/career-ops applyAIがフォーム補助(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.js20+
AIプログラミングCLI少なくとも1つ(Claude Code / OpenCode / Gemini CLI / Codex / Qwen / Copilot)
PlaywrightChromiumブラウザ(PDF生成に必要)
OSmacOS / Linux / Windows(WSL推奨)

任意/強化:

プロジェクト用途
Go 1.21+TUI Dashboardを実行
Google AI Studio API Keygemini-eval.mjs という独立スクリプトを実行(無料枠)
Chromiumブラウザオファーがまだ生きているか検証(Playwrightが自動でセットアップ)
さまざまなLLM API KeyClaude / 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は一度 起動時チェック を実行します:

  1. cv.md はある? ✅
  2. config/profile.yml は本物?(.exampleではない) ✅
  3. modes/_profile.md は _profile.template.md からコピーされている? ⚠️
  4. 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は完全自動パイプラインを実行します:

  1. Archetype検出 — LLMOps / Agentic / PM / SA / FDE / Transformation に分類
  2. A-F評価 — 6軸(Role summary / CV match / Level strategy / Comp research / Personalization / Interview prep)
  3. レポート生成 — reports/001-anthropic-2026-06-09.md に出力
  4. PDF生成 — PlaywrightでATS履歴書をレンダリングし、output/001-anthropic-cv.pdf を出力
  5. trackerに書き込み — data/applications.md に1行追加
  6. パイプライン完全性の更新 — 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週目はだいたいこうなります。修正:

  1. 評価を3〜5回多めに回して、都度Agentに「このスコアは納得できない。理由はXX」とフィードバックする
  2. Agentは学んだ内容を modes/_profile.md に書き込む
  3. 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段階:

  1. バッチ数を減らす — 一度に10〜20件にする。100+を一気に流さない
  2. ローカルモデルで代替 — ofertas(比較)/tracker/pdf のような構造化タスクはローカルの小型モデルに置き換え可能
  3. 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)。

Updated June 9, 2026