求人クロールからAI模擬面接まで全自動!LLM搭載ジョブサーチツール「FindJobs-Agent」

タグ FindJobs-Agent求人自動収集AI模擬面接スキルマッチングLLMPythonジョブサーチcolumnコラムlinuxLinuxwindowsWindowsGitHubオープンソースhe-yufeng

求人クロールからAI模擬面接まで全自動!LLM搭載ジョブサーチツール「FindJobs-Agent」

ひとことでいうと

FindJobs-Agent は、求人情報の自動収集から AI による分析、履歴書との照合、そして模擬面接まで、転職・就職活動に必要なステップをひとつのツールでまとめてこなせる Python 製のジョブサーチツールです。難しいプログラムの操作は不要で、ブラウザ画面からすべての機能を使えます。テック系の求人に特化しており、自分のスキルが志望求人にどれだけ合っているかをパーセンテージで確認できます。エンジニアを目指す学生から転職を考える社会人、採用データを分析したい研究者まで、幅広い方に活用できるツールです。

こんな人におすすめ

1. 就職・転職活動中のエンジニア

志望している求人に対して、自分のスキルが何パーセント一致しているかを数値で把握できます。「Python は持っているけれど Docker が足りない」といったギャップを画面上で視覚的に確認し、次に学ぶべきことを素早く決められます。さらに AI 模擬面接を使えば、応募書類の作成から面接の練習まで、ひとつのツールで一気に進められます。

2. 大学の就職支援担当者・キャリアコンサルタント

学生に紹介する求人を手作業で探す手間を大幅に省けます。大量の求人を自動で収集・整理し、スキルタグ(スキルの目印となるキーワード)でまとめて管理できるので、学生ごとに合った求人を提案しやすくなります。AI 模擬面接の機能を使えば、面接練習の機会を手軽に提供できます。React 製のフロントエンド画面をそのまま学生向けのポータルとして活用することも可能です。

3. 採用マーケットのリサーチャー・データサイエンティスト

テック大手各社の求人傾向を自動でデータ化して、業界全体の需要トレンドを定量的に分析できます。スキルタグに付いた重要度スコア(1〜5 段階)を集計すれば、今どのスキルが求められているかを一目で把握できます。定期実行と組み合わせれば、求人市場の変化をリアルタイムに追うことも可能です。

インストール・使い方

前提条件

  • Python 3.9 以上(動作確認は 3.12.13)
  • Node.js 18 以上(フロントエンド画面のビルドに必要)
  • Google Chrome(ブラウザ自動操作モードを使う場合のみ)
  • OpenAI API キー(LLM 分析・AI 面接に必要)

Step 1: ソースコードをダウンロードする

まず、ターミナル(文字を入力してパソコンに命令を送る画面)を開いて、次のコマンドを実行します。コマンドはそのままコピー&ペーストで貼り付けるだけで大丈夫です。

git clone https://github.com/he-yufeng/FindJobs-Agent.git
cd FindJobs-Agent

git clone でプロジェクトのファイルをまるごとダウンロードし、cd でそのフォルダの中に移動しています。


Step 2: Python ライブラリをインストールする

pip install -r requirements.txt

ツールが動くために必要な部品(ライブラリ)を一括でインストールするコマンドです。pip は Python のパッケージ管理ツールで、requirements.txt に書かれたすべての部品を自動で取得してくれます。


Step 3: OpenAI API キーを設定する

プロジェクトのトップフォルダに API_key.md という名前のファイルを新しく作成し、1 行目に自分の API キーを貼り付けます。

sk-your-api-key-here

API キーは OpenAI のアカウントページから取得できます。これがないと LLM 分析と AI 模擬面接の機能は使えませんが、後述する Gradio デモならキーなしでも試せます。


Step 4: バックエンドを起動する

python api_server.py

バックエンド(画面の裏側でデータを処理する部分)のサーバーを起動します。このコマンドを実行したままにしておくと、ブラウザ画面からの命令を受け付けられるようになります。


Step 5: フロントエンドを起動する

cd FrontEnd
npm install
npm run dev

npm install でフロントエンド用の部品をインストールし、npm run dev でブラウザ画面を立ち上げます。npm は Node.js に付属しているパッケージ管理ツールです。


Step 6: ブラウザでアクセスする

ブラウザ(Google Chrome や Firefox など)で http://localhost:8080 を開きます。求人一覧・履歴書分析・AI 面接の各タブが表示され、すべての機能をマウスで操作できます。

動かしてみた

Docker 環境(Python 3.12.13)で pip install -r requirements.txt を実行し、依存パッケージのインストールが正常に完了することを確認しました。

Python 3.12.13

ファイル構成も問題なく展開されており、バックエンドの主要ファイルである api_server.pyjob_matcher.pyllm_client.pypipeline.py がすべて揃っています。フロントエンド側も FrontEnd/package.jsonvite.config.tstailwind.config.js がそろっており、Vite + React + Tailwind CSS の環境が正しく用意されていることを確認できました。

パイプライン実行コマンドには --analyze-only--max-jobs などのオプションが用意されており、最初から大規模な収集をしなくても小規模なテスト実行から始められる設計になっています。

ブラウザで試す(デモ)

ローカル環境を構築する前にツールの雰囲気を試したい方向けに、Gradio(グラジオ)デモも用意されています。Gradio とは、Python で手軽にウェブアプリを作れるフレームワーク(枠組みとなるツール)です。求人票のテキストと履歴書のテキストを貼り付けると、スキルタグの抽出とマッチ率をすぐにブラウザで確認できます。OpenAI API キーが不要なキーワードベースの簡易版なので、気軽にコンセプトを体感できます。本番ツールでは LLM がさらに高精度なタグ抽出と重要度スコアリングを行いますが、基本的なスキルマッチングの仕組みはデモでも十分体験できます。

実践のコツ: はじめの一歩

いきなり全機能を動かそうとせず、まず小さく試すのがコツです。以下の流れで進めると詰まりにくくなります。

  • まずサポート企業一覧を確認する--list オプションでどの企業に対応しているかを把握してから収集対象を選びましょう。
  • API モードで動作確認する — Selenium(ブラウザ自動操作)モードは Chrome のセットアップが必要です。最初は API 経由(デフォルト)で動かして、基本の流れを確認するとスムーズです。
  • 少量から試す--max-jobs 50 のように取得件数を絞ると、API の消費量を抑えながら動作確認できます。
  • 分析だけ先に試す--analyze-only を付けるとクロールをスキップして分析処理だけ実行できます。すでに収集済みのデータがある場合はこのオプションが便利です。
  • 企業を絞って収集する-c tencent netease のように対象企業を指定すると、全企業を一度に取得するより処理が速く完了します。
# サポート企業の一覧を確認
python job_crawler_v2.py --list

# テンセントと NetEase から最大 100 件取得
python job_crawler_v2.py -c tencent netease -m 100

# LLM 分析だけを 50 件で試す
python pipeline.py --analyze-only --max-jobs 50

# クロール→分析→データ生成まで一括実行
python pipeline.py

活用アイデア

  • スキルロードマップの可視化 — 複数の求人からスキルタグを収集し、重要度スコアの高いものを集計すると、業界が今求めているスキルの地図が見えてきます。時系列で比較すれば、需要が伸びているスキルの動向も追えます。
  • 面接練習の自動化 — 志望企業の求人票を入力として AI 模擬面接を繰り返し、回答パターンを蓄積することで面接対策を体系化できます。複数社の求人に対してまとめて練習できるのは、従来の面接対策ツールにはない強みです。
  • 採用トレンドの定期モニタリングpipeline.py を cron(クロン:決まった時刻にコマンドを自動実行する仕組み)でスケジュール実行すると、特定企業の求人増減や求められるスキルの変化を定期的に追跡できます。データに基づいた採用戦略の意思決定に役立てられます。
  • 大学のキャリア授業での活用 — 実際の求人データを使ったスキルギャップ分析を学生に体験させることで、就活準備の動機づけになります。AI 模擬面接を授業に取り入れれば、実践的なコミュニケーション力のトレーニングにもなります。
  • フリーランス案件の傾向調査 — テック系の求人トレンドを定量化することで、フリーランスとして売りやすいスキルセットの見極めにも活用できます。副業や独立を検討している方が市場を把握するための情報源としても有効です。

用語とポイント解説

LLM(大規模言語モデル)

GPT-4 のような、大量のテキストを学習した AI モデルのことです。かんたんに言うと、文章を読んで意味を理解し、質問に答えたり情報を整理したりできる「賢いプログラム」です。FindJobs-Agent では求人票の文章を LLM に読み込ませ、学歴要件・専攻・スキルなどの重要な情報を自動で抜き出すために使っています。

スキルタグ

求人票や履歴書から取り出したスキル名のことです。かんたんに言うと「Python」「Docker」「機械学習」のような、仕事に必要な技術や知識のラベルです。FindJobs-Agent では各タグに重要度(1〜5 段階)が付き、何がより大切なスキルかを一目で確認できます。

マッチ率

求人票のスキルタグと自分の履歴書のスキルタグがどれだけ一致しているかをパーセンテージで表した数値です。かんたんに言うと「この求人に対して自分は何点くらい合っているか」を数字で見せてくれる指標です。不足しているスキルを把握して学習の優先順位を決めるのに役立ちます。

Selenium(セレニウム)

ブラウザを自動で操作するためのツールです。かんたんに言うと「人間の代わりにブラウザを操作してページを開き、情報を取ってくるロボット」です。JavaScript で動くページはふつうの方法では内容を取得しにくいため、Selenium を使って実際にブラウザを動かしてデータを収集します。

Flask(フラスク)

Python で作られた軽量な Web サーバー用フレームワーク(枠組み)です。かんたんに言うと「ブラウザからの要求を受け取り、データを返す窓口を簡単に作れるツール」です。FindJobs-Agent ではバックエンドの API の基盤として使われており、フロントエンドとのデータのやり取りを担っています。

Vite + React(ヴァイト + リアクト)

フロントエンド(ブラウザに表示される画面)を作るためのツールの組み合わせです。かんたんに言うと「React が画面の部品を作り、Vite がそれを高速でまとめてくれる」という役割分担です。FindJobs-Agent のダッシュボード画面はこの組み合わせで動いています。

パイプライン

「クロール → LLM 分析 → スコアリング → API 配信」という一連の処理をひとまとめにした自動フローのことです。かんたんに言うと「ひとつのコマンドを実行するだけで最初から最後まで全部やってくれる流れ作業」です。pipeline.py を実行するだけで、求人収集からデータ配信まで自動で進みます。

API(エーピーアイ)

プログラム同士がデータをやり取りするための「窓口」の仕組みです。かんたんに言うと「レストランの注文口のようなもの」で、「この情報をください」と頼むと決まった形式でデータが返ってきます。FindJobs-Agent ではフロントエンドとバックエンドの間、また OpenAI との通信にも API が使われています。

Gradio(グラジオ)

Python でかんたんにウェブアプリを作れるフレームワークです。かんたんに言うと「数行のコードでブラウザから操作できる画面を作れる便利ツール」です。FindJobs-Agent のデモはこれを使っており、OpenAI API キーなしでスキルマッチングのコンセプトをすぐに体験できます。


求職活動の効率を上げたい方も、採用市場をデータで深掘りしたい方も、ぜひスキルギャップの可視化や AI 模擬面接の練習、採用トレンドの定期モニタリングなどに FindJobs-Agent を活用してみてはいかがでしょうか。