career-ops

オープンソースの AI 求職エージェント。

English | Español | Deutsch | Français | Português (Brasil) | 한국어 | 日本語 | 简体中文 | 繁體中文 | Українська | Русский | Polski | Dansk | தமிழ் | العربية | हिन्दी | Türkçe | Tiếng Việt | Bahasa Indonesia

Santiago Fernández de Valderrama Aparicio  作成者: @santifer、    700+ のコントリビューターと共に

何か月も履歴書を送り続けて、返⁠事⁠は⁠沈⁠黙。
だから、自分に必要なフ⁠ィ⁠ル⁠タ⁠ー⁠を⁠作⁠っ⁠た。

求人 740 件を評価。応募 68 件。面⁠接 12 回。⁠内⁠定 1 件。
最初のユーザーは私だった。仕⁠事⁠を⁠得⁠た。そ⁠し⁠て⁠オ⁠ー⁠プ⁠ン⁠ソ⁠ー⁠ス⁠に⁠し⁠た。

求人を貼り付ける。あなたのマ⁠シ⁠ン⁠上⁠で、ま⁠だ⁠募⁠集⁠中⁠か、自⁠分⁠に⁠合⁠う⁠か⁠を⁠教⁠え⁠て⁠く⁠れ⁠る。
履歴書を求人に合わせ、回⁠答⁠を⁠下⁠書⁠き⁠す⁠る。送⁠信⁠ボ⁠タ⁠ン⁠を⁠押⁠す⁠の⁠は、⁠あ⁠な⁠た。

career-ops のダッシュボードで見る著者自身の求職活動:スコア付きの求人一覧、「応募しない」と印が付いた求人の赤い件数、そして評価レポートの全文

私自身の求職活動、その途中経過。UI は⁠ス⁠ペ⁠イ⁠ン⁠語。

企業はAIで候補者をフ⁠ィ⁠ル⁠タ⁠リ⁠ン⁠グ⁠し⁠て⁠い⁠る。
私は候補者に、企⁠業⁠を⁠選⁠ぶ⁠た⁠め⁠の AI を⁠渡⁠し⁠た⁠だ⁠け⁠だ。

半年後、私はその仕事を辞めた。
今、私たちは career-ops を⁠作⁠っ⁠て⁠い⁠る。あ⁠な⁠た⁠が⁠自⁠分⁠の⁠仕⁠事⁠を⁠つ⁠か⁠め⁠る⁠よ⁠う⁠に。

求人ひとつで試す ↓ · ス⁠ト⁠ー⁠リ⁠ー⁠の⁠全⁠文⁠を⁠読⁠む →

ターミナルは使いたくないですか? Web版のウェイトリストに登録する →


Hired with career-ops: public stories on the record

私の後に来た人たちが、どうやって採用されたかを書き残してくれた。

開いて読める採用ストーリー

どのカードも、開いて読める公開 Issue。あなたも決まった? カードを残す →

⭐ career-ops が役に立ったなら、ス⁠タ⁠ー⁠ひ⁠と⁠つ⁠で、次⁠の⁠人⁠が⁠見⁠つ⁠け⁠や⁠す⁠く⁠な⁠る。


WIRED      Business Insider

Vercel OSS Program

GitHub Trending: #1 repository of the day (Trendshift)      Featured on Product Hunt

## あなたの番 今夜応募しようとしていた求人をひとつ貼り付けてみてほしい。応募しないと返ってきたら、その夜を取り戻したということ。プランと一緒に返ってきたら、次にやることは分かっている。 ```bash npx @santifer/career-ops init ```

オープンソース。ローカル実行。すでに使っている AI CLI の中で。無料モデルとローカルモデルにも対応。

## ひとりで探さなくていい 送信を押した後の沈黙は、あなたのせいではない。同じものを見た人が十分にいて、この実践を六行に書き留めた: > より少なく、より良く応募する。量より信号。キーワードより根拠。決めるのは人間。ローカルファースト。テーブルの両側に尊厳を。

CareerOps マニフェスト:署名者数(ライブ)

その中の何人かの、自身の言葉。

CareerOps マニフェストへの三つの署名、それぞれの言葉で

すべての署名は、監査できるコミット。全部読むか、あなたの署名を加える →


採用は勝手には直らない。それをくぐり抜けている人たちなら直せる。そして彼らはもう同じ部屋にいて、メモを見せ合い、互いのセットアップを直している。

コントリビューターの GitHub アバターが 2026年4月 から参加順に埋まっていくアニメーションの壁。次のマスは空けてある。

[修正はここで書かれる](CONTRIBUTING.md)。クラブではなく、部屋。**一緒に作ろう。**

Discord:career-ops サーバーのメンバー数(ライブ)

## スポンサー career-ops は求職者にとって永久に無料。以下の企業がこのプロジェクトをスポンサーしている:

SerpApi

SerpApi · 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.

> スポンサーシップが買うのは明確に表示された露出であって、影響力ではない。どんな金額もロードマップを変えず、プロダクトの中に何も置かない。スポンサーが評価、順位付け、推薦に現れることは決してない。 ## career-ops があなたにしてくれること 求人を貼り付ける。その夜を使う価値があるかを教えてくれる。 - **まだ募集中?** 一文字も書く前に、その求人がまだ掲載されているかを確認する。 - **あなた向きではない?** あなたの本当の履歴書に照らして求人を採点し、合わなければ見送れと言う。無視することもできる。 - **応募する価値がある?** 履歴書、カバーレター、回答の下書きを作る。読むのはあなた。送るのもあなた。 - **誰に話せばいい?** その人を見つけ、メッセージの下書きを作る。送ることは決してない。 - **データはどこへ行く?** すべての応募はあなたのマシンに残る。私たちのところには何もアップロードされない。 - **何を学ぶべき?** 不採用が続いた後に、足りないものを名指しする。 最初の数回は粗い。まだあなたを知らないから。話しかけてほしい:あなたの履歴書、望むこと、断ること。リクルーターの最初の一週間だと思ってほしい。 初回起動時に、それらすべてをチャットで尋ねる。手で設定するものは何もない。 ## career-ops がやらないこと - **応募を自動で送信すること。** すべての項目の回答の下書きは作る。確認して送信ボタンを押すのはあなた。スクリプトは決して POST しない(`prepare-application.mjs`)。 - **メールを送る。** 下書きのみ。このコードベースにメール送信の仕組みはどこにもありません。 - **外部に送信する。** テレメトリなし、こちらのバックエンドなし。あなたの履歴書は、あなたのマシンから自分で選んだ AI プロバイダーへ行くだけで、他のどこにも行きません。唯一の公開台帳はこのリポジトリ、`HIRED.md` とその issue です。 - **4.0/5 未満の求人に応募させる。** 応募しないよう伝えます。無視することはできますが、その旨を伝えます。 履歴書を言い換えることはあっても、でっち上げることは決してあってはならない。あなたの履歴書にも `article-digest.md` にもない数字や事実を含む PDF はコードのチェックで止まりますが、言い換えの一つひとつまではまだ判断できません。送る前にすべての履歴書を読んでください。詳細は [FAQ](#faq) に。 ## 機能 | 機能 | 説明 | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | | **A-H 評価** | 職務サマリー、CV との適合(この求人で各要件がどれだけ重要か、その重みが求人票の文言・構造・推定のどれに由来するかを要件ごとにラベル付け。推定は決して最上位帯にならない)、レベル戦略、報酬リサーチ、パーソナライズ、面接準備(STAR+R)、さらにブロック G の求人の正当性チェック(まだ募集中か、再掲載か:判定ではなく観察)と、ビザスポンサーなしを明記した求人票を絶対的なブロッカーとして示す就労許可シグナル | | **Human-in-the-Loop** | AI が評価して推薦し、あなたが決めて行動する。システムが応募を送信することは決してありません。最終判断は常にあなたのものです | | **ATS 向け PDF 生成** | あなた自身の経験をもとに求人票ごとに調整した、ATS が読み取れる CV(Space Grotesk + DM Sans のデザイン) | | **カバーレター生成** | リサーチに基づくカバーレター。キーワードの反映、4 つの対話式の切り口(理由/課題/アプローチ/トーン)、チャット内での下書き承認、CV と同じ HTML + Playwright パイプラインによる A4 PDF。評価のたびに自動で下書きし、`/career-ops cover` で必要なときに仕上げて生成 | | **CV の先へ** | 企業調査([`deep`](modes/deep.md))は AI 戦略、最近の動き、エンジニアリング文化、あなたのプロフィールが取るべき角度を明らかにします。連絡先の発見([`contacto`](modes/contacto.md))は、連絡する価値のある採用責任者・リクルーター・チームメンバーを特定し、相手のタイプに合わせた 300 文字以内の LinkedIn メッセージを下書きします。正式な応募メールの下書き([`email`](modes/email.md))は、評価済みレポートや貼り付けた求人票を件名・本文・添付チェックリストに変えます。何も送信・提出・クリックしません。応募はあなたを列に並ばせる。調査は会話を生む。 | | **パターン分析** | 不採用パターンと ATS チャネル別の通過率(`analyze-patterns.mjs`)、求職全体のファネル統計(`stats.mjs`)、ゴーストジョブの兆候かもしれない再掲載の検出(`detect-reposts.mjs`) |
その他にできること | 機能 | 説明 | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | | **自動パイプライン** | URL を貼るだけで、完全な評価 + PDF + トラッカー登録 | | **面接ストーリーバンク** | 評価をまたいで STAR+Reflection のストーリーを蓄積:実際に受ける行動面接の質問に合わせて調整できる 5〜10 本のマスターストーリー | | **交渉スクリプト** | 給与交渉のフレームワーク、地域差による減額への反論、競合オファーの活用 | | **応募メールの下書き** | レポートまたは貼り付けた求人票から、リクルーター向け・紹介向け・コールド応募向けの正式なメールを作成。件名、添付チェックリスト、根拠付きの適合ポイント、プロフィール由来の連絡先ブロック付き。下書きのみ:career-ops は決して送信・提出・クリックしません。 | | **ポータルスキャナー** | 100 社以上を事前設定(Anthropic、OpenAI、ElevenLabs、Retool、n8n…)+ Ashby、Greenhouse、Lever、Wellfound を横断するカスタム Web 検索クエリ | | **資金調達企業の発見** | レビュー優先の `company:funded` コマンドが、構造化された公開フィードから最近資金調達した企業とソース診断を表示。あなたのデータは編集しません | | **バッチ処理** | ヘッドレス CLI ワーカー(`claude -p` / `opencode run`)による並列評価 | | **ダッシュボード TUI** | パイプラインを閲覧・フィルタ・ソートするターミナル UI | | **パイプラインの整合性** | 自動マージ、重複排除、ステータス正規化、ヘルスチェック | | **面接スイート** | 時間割型の準備プラン、フィードバック付きの練習セッション、面接後の振り返り([`interview/`](modes/interview/README.md))、企業の危険信号検出([`interview-redflag`](modes/interview-redflag.md)) | | **オファー段階** | 契約書の読み合わせ:条項ごとの確認と弁護士への質問リスト([`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) を参照 |
## 仕組み

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).

## クイックスタート **いちばん速い方法、コマンド 1 つで:** ```bash npx @santifer/career-ops init ``` > 💡 `npx` は [Node.js](https://nodejs.org) に同梱されています:グローバルに何もインストールせず、 > インストーラーを 1 回だけ実行します。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 は会話だけでセットアップ(CV、プロフィール、目標とする職種)を案内します。手で編集するものはありません。**
手動でセットアップしたい?(git clone) ```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 # 求人の URL または説明文を貼り付けると auto-pipeline が起動します。 # それ以外のモードと、お使いの CLI での呼び出し方は、下の「使い方」を参照してください。 ```
### グローバルインストール ```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`:`npx` 形式より `career-ops init` と打ちたい場合に。ほかのコマンドは増えません。 ### そのほかの実行方法 - **任意のフォルダから、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 自身がカスタマイズするように設計されています。** モード、アーキタイプ、スコアの重み、交渉スクリプト:変えてほしいと頼むだけです。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))、定期スキャンのスケジュールとトークンを使わない選別からショートリストまでのレシピは [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) にあります。 ## 使い方 求人の URL または説明文を AI CLI に貼り付けます。career-ops は、リンク付きの求人がまだ掲載中かを確認し(貼り付けたテキストには確認できるリンクがありません)、あなたの CV に照らしてスコアを付け、レポートを書き、CV を調整して(既定では PDF)、トラッカーに 1 行追加します。ほとんどの日はこれで足ります。それ以外はすべて、名前を指定して呼び出すモードです。求人を読み取れない場合、パイプラインは止まってテキストの貼り付けを求めます。 ### モードの呼び出し方 | 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` です。 どの CLI も 1 つのルーター `.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"` でプロンプトを 1 つヘッドレス実行してください([docs/CODEX.md](docs/CODEX.md))。対応する各 CLI での実行方法、ヘッドレスコマンドがある CLI のそのコマンド、CLI ごとのセットアップ上の注意は [docs/SUPPORTED_CLIS.md](docs/SUPPORTED_CLIS.md) にあります。 ### 日常的に使うコマンド | コマンド | できること | | --- | --- | | *URL または求人票を貼り付ける* | フルパイプライン:掲載確認(URL のみ)、A-G 評価(高スコア時は H も)、レポート、調整済み CV(既定では PDF)、トラッカー行 | | `scan` | ポータルをスキャンして新しい求人を見つけ、受信箱(`data/pipeline.md`)に追加する | | `pipeline` | 受信箱で待っている URL を順に処理する(standard と premium の階層では、明らかに合わないものを飛ばすことがある) | | `apply` | 応募フォームをあなたと一緒に項目ごとに入力する。送信の手前で止まる | | `tracker` | 各応募の状況 | | `followup` | フォローアップの時期が来ている応募と、その下書き |
すべてのコマンド(求職の段階別) `oferta`、`ofertas`、`contacto` は元のスペイン語の名前のままです(オファー、複数のオファー、連絡先の意味)。 **求人を探す** | コマンド | できること | | --- | --- | | [`scan`](modes/scan.md) | ポータルをスキャンして新しい求人を発見 | | [`discover`](modes/discover.md) | 企業名のリストをスキャン可能な ATS ボードに解決します。既定ではプレビューのみで、`--write` を付けたときだけ `portals.yml` に追加します(トークン不要) | | [`pipeline`](modes/pipeline.md) | 受信箱(`data/pipeline.md`)の未処理 URL を処理 | | [`triage`](modes/triage.md) | フル評価の前に、`modes/_brief.md` に基づいて応募する・しないを素早くふるい分ける(ファイルは書き込まない) | | [`batch`](modes/batch.md) | ヘッドレスワーカーで多数の求人を評価(Claude では並列、他の CLI では 1 件ずつ) | | [`titles`](modes/titles.md) | CV から近い職種名を提案して、探す範囲を広げる | **求人を評価する** | コマンド | できること | | --- | --- | | *URL または求人票を貼り付ける* | [Auto-pipeline](modes/auto-pipeline.md):評価 + レポート + 調整済み CV(既定では PDF) + トラッカー登録 | | [`oferta`](modes/oferta.md) | 評価のみ、ブロック A〜G、高スコア時は H も(PDF なし) | | [`ofertas`](modes/ofertas.md) | 複数の求人を比較してランク付け | | [`deep`](modes/deep.md) | 企業についての詳細リサーチ用プロンプト | | [`eu-swe`](modes/regional/eu-swe.md) | CV・応募・面接の前に、ヨーロッパのソフトウェアエンジニアリング職への応募を調整 | **応募する** | コマンド | できること | | --- | --- | | [`pdf`](modes/pdf.md) | ATS 最適化 CV を PDF で出力 | | [`ats`](modes/ats.md) | 生成した CV の ATS 適合性チェック:スコアと修正できる問題点 | | [`text`](modes/text.md) | 調整済み CV を markdown で出力(`cv.md` を反映、PDF なし) | | [`latex`](modes/latex.md) | CV を 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) | 1 問ずつフィードバック付きで行う模擬面接 | | [`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) | 受け取ったオファーや契約書をあなたと一緒に読む:条項の確認と弁護士への質問(法的助言ではありません) | **プロフィールと CV** | コマンド | できること | | --- | --- | | [`interview`](modes/interview.md) | プロフィール設定:あなたの経験についての対話形式のインタビューで、CV とプロフィールを作成(面接の練習ではありません) | | [`intake`](modes/intake.md) | `documents/` 内のファイル(マスター CV、LinkedIn エクスポート)からプロフィールを作成・充実させる。確認なしには何も書き込まない | | [`master-profile`](modes/master-profile.md) | Master Career Profile をインポート・レビュー・検証し、選んだ事実を CV の箇条書きとして準備 | | [`add`](modes/add.md) | プロジェクト、論文、職務を CV に追加(取得、プレビュー、確認) | | [`expand`](modes/expand.md) | プロフィールのリンクから、CV に足りないコンピテンシーを発見 | | [`retro`](modes/retro.md) | このセッションを振り返り、教えた内容をルールとして残す(承認したものだけを書き込む) | **ターゲティングを改善する** | コマンド | できること | | --- | --- | | [`patterns`](modes/patterns.md) | 不採用のパターンを分析してターゲティングを改善 | | [`calibrate`](modes/calibrate.md) | 評価スコアが実際の結果を予測できているかを確認。参考情報のみ:スコアリングは変更しない | | [`upskill`](modes/upskill.md) | 評価済みレポート全体のスキルギャップ分析 | | [`training`](modes/training.md) | コースや資格をノーススターに照らして評価 | | [`project`](modes/project.md) | ポートフォリオ用プロジェクトのアイデアを評価 | **システム** | コマンド | できること | | --- | --- | | [`agent-inbox`](modes/agent-inbox.md) | 次のセッションへの依頼をキューに入れ、そのときに処理する(`data/agent-inbox.md`)。`inbox` でも動作 | | [`update`](modes/update.md) | career-ops のシステムファイルを更新(差分プレビューと互換性チェック付き) |
## 事前設定済みポータル スキャナーには、すぐにスキャンできる **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 フィード、マークダウンフィード、ローカルパーサーをカバーします。完全な一覧は[対応求人サイト](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** もあります(アルファ版かつオプトイン:自分で起動しない限り何も動きません):[`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` が読むのと同じファイルをチェックします。 - **生成されるドキュメント:** 調整済みの CV とカバーレターは `{DATA_ROOT}/output/` の下に書き込まれ、それらをレポートに結び付ける PDF マニフェストは `{DATA_ROOT}/data/pdf-index.tsv` にあります。`CAREER_OPS_TRACKER` が未設定の間は、これらの書き込み先を限定するトラッカーのワークスペースはデータルートであり、チェックアウトではありません。 - **トラッカー上書き時の PDF:** `generate-pdf.mjs` はワークスペースを決める前に `CAREER_OPS_TRACKER` を解決します。そのため上書きが設定されていると、ワークスペースはそのトラッカーを含むフォルダ(トラッカーが `data/` フォルダにある場合はその一つ上のフォルダ)になります。このとき CV の HTML とすべての PDF はそのワークスペース内に置く必要があり、マニフェストはその `data/pdf-index.tsv` に移ります。カバーレターは引き続き `{DATA_ROOT}/output/` を対象とするため、そのフォルダがトラッカーのワークスペースの外にある場合は拒否されます。 - **コード層は動かない:** `node_modules/`、`providers/`、`modes/`、そしてスクリプト自体は常にリポジトリを基準に解決され、データルートを基準にすることはありません。 Go のダッシュボード TUI、Node.js スクリプト、AI エージェントモードのすべてが、この解決の階層を自動的に尊重します。 ## 技術スタック ![Claude Code](https://img.shields.io/badge/Claude_Code-000?style=flat&logo=anthropic&logoColor=white) ![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat&logo=node.js&logoColor=white) ![Playwright](https://img.shields.io/badge/Playwright-2EAD33?style=flat&logo=playwright&logoColor=white) ![Go](https://img.shields.io/badge/Go-00ADD8?style=flat&logo=go&logoColor=white) ![Bubble Tea](https://img.shields.io/badge/Bubble_Tea-FF75B5?style=flat&logo=go&logoColor=white) - **エージェント**:共有スキルとモードを備えた AI コーディング CLI(`AGENTS.md` + CLI ごとのラッパー) - **PDF**:Playwright + HTML テンプレート - **カバーレター**:HTML テンプレート + Playwright(A4 PDF、CV と同じパイプライン) - **スキャナー**:Playwright + Greenhouse API + WebSearch - **ダッシュボード**:Go + Bubble Tea + Lipgloss(Catppuccin Mocha テーマ) - **データ**:Markdown テーブル + YAML 設定 + TSV バッチファイル

Latest release

Built with Claude Code

エージェントスキル標準に対応した CLI なら、どれでも動く。対応 CLI を参照。
Claude Code OpenCode Antigravity CLI Codex Qwen Kimi GitHub Copilot Grok Build CLI Pi
Node.js Go Playwright Bubble Tea MIT Trademark Policy

## 同じくオープンソース - **[cv-santiago](https://github.com/santifer/cv-santiago)**:AI チャットボット、LLMOps ダッシュボード、ケーススタディ付きのポートフォリオサイト(santifer.io)。求職活動と並行して見せるポートフォリオが必要なら、フォークして自分のものにしてください。 ## FAQ **career-ops とは何ですか?** career-ops([career-ops.org](https://career-ops.org)、別名 **careerops**) は、あなたの AI コーディング CLI(Claude Code、Codex、OpenCode など)の中でローカルで動くオープンソースの AI 求職ツールで、すべての判断をあなたに委ねます。求人を CV と照らして評価し、ATS 向けに調整した PDF を生成し、連絡すべき相手を見つけ、すべてを一か所で追跡します:最終判断は常にあなたのものです。[CareerOps マニフェスト](https://career-ops.org/manifesto)の最初のリファレンス実装です。 **カスタマイズされた履歴書が事実をでっち上げることはありますか?** あってはならず、プロンプトにもそう書いてあります:言い換えはしても、でっち上げはしない。`generate-pdf` は、あなたの情報源にない数字や事実を含む CV をブロックします(`--skip-fact-check` を渡した場合を除く)。`pdf` モードは `cv-title-check.mjs` も実行します。これはカスタマイズした CV の各職名を、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 はそのキーを使い、トークン単位で課金されます。`echo $ANTHROPIC_API_KEY` を実行して何か表示されたら、シェルのプロファイルから削除し、ターミナルを再起動して `/login` を実行してください。バッチモードは例外で、`claude -p` のワーカーは対話型ログインを使いません:`claude setup-token` を 1 回実行し、その結果を `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 は Windows で動きます。プラットフォーム固有のセットアップと既知の落とし穴(Git Bash の検出、改行コード、タスクスケジューラ)は [docs/WINDOWS.md](docs/WINDOWS.md) にあります。インストール中にシンボリックリンクのエラーでスキルが読み込めない場合、対処法は [docs/FAQ.md](docs/FAQ.md) にあります。完全な手順は [docs/SETUP.md](docs/SETUP.md) を参照してください。 **career-ops は私の代わりに自動で応募しますか?** いいえ。career-ops はフィルターであって、数を撃つ自動応募ツールではありません。AI が評価し、順位を付け、下書きを作り、あなたが確認して決めます。下書きも入力もしますが、送信は決してしません。送信ボタンを押すのはあなたです。この Human-in-the-Loop の設計こそが核心です。 **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. **データはあなたが管理します。** CV、連絡先、個人データはあなたのマシンに留まり、あなたが選んだ AI プロバイダー(Anthropic、OpenAI など)に直接送られます。私たちはあなたのデータを収集・保存・閲覧しません。 2. **AI はあなたが管理します。** デフォルトのプロンプトは AI に応募を自動送信しないよう指示していますが、AI モデルは予測不能な振る舞いをすることがあります。プロンプトを変更したり別のモデルを使ったりする場合は自己責任です。**送信前に、AI が生成した内容の正確さを必ず確認してください。** 3. **第三者の利用規約はあなたが遵守します。** 利用する求人ポータル(Greenhouse、Lever、Workday、LinkedIn など)の利用規約に従ってこのツールを使う必要があります。雇用主にスパムを送ったり、ATS に過剰な負荷をかけたりする目的で使わないでください。 4. **保証はありません。** 評価は推奨であって真実ではありません。AI モデルはスキルや経験を捏造することがあります。作者は、採用結果、不採用、アカウント制限、その他いかなる結果についても責任を負いません。 詳細は [LEGAL_DISCLAIMER.md](LEGAL_DISCLAIMER.md) を参照してください。このソフトウェアは [MIT ライセンス](LICENSE)のもと「現状のまま」、いかなる保証もなく提供されます。 ## コントリビューター コード、ドキュメント、翻訳、テストを提供したすべての人は [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)に従います。コミュニティでの利用には 寛容で、商用製品の命名と推奨には制限があります。 ## スター履歴

Live star telemetry of career-ops-hq/career-ops

作成・メンテナンス:Santiago Fernández de Valderrama Aparicio(@santifer)

## つながりましょう [![Website](https://img.shields.io/badge/santifer.io-000?style=for-the-badge&logo=safari&logoColor=white)](https://santifer.io) [![LinkedIn](https://img.shields.io/badge/LinkedIn-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://linkedin.com/in/santifer) [![X](https://img.shields.io/badge/X-000?style=for-the-badge&logo=x&logoColor=white)](https://x.com/santifer) [![Discord](https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/8pRpHETxa4) [![Email](https://img.shields.io/badge/Email-EA4335?style=for-the-badge&logo=gmail&logoColor=white)](mailto:hi@santifer.io)