Media > AI活用ユースケース > 採用 > 複数の求人媒体と自社採用サイトの掲載状況をエージェントが毎日見回り、掲載期限切れ・掲載停止・条件の更新漏れ・応募の止まった求人を拾って、採用担当へ対応の案を出す

複数の求人媒体と自社採用サイトの掲載状況をエージェントが毎日見回り、掲載期限切れ・掲載停止・条件の更新漏れ・応募の止まった求人を拾って、採用担当へ対応の案を出す

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

複数の求人媒体と自社の採用サイトに載っている求人を、エージェントが毎朝見回ります。求人台帳と食い違うもの、期限が切れたもの、止まったもの、応募が止まったものを拾い、採用担当へ対応の案を出します。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Make/n8n/Power Automate/Zapier
対象業界
人材/介護/小売/物流/飲食
対象部門
採用
対象業務
内容確認・チェック/比較検討
主な課題
人手が足りない/期限・対応漏れが起きる/確認ミスが多い
AIで行う処理
エージェント
主な効果
入力漏れ削減/工数削減/機会損失防止
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
50h/月
AI導入後
12h/月
想定削減
76%
年間削減
456h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 毎朝、3つの媒体の管理画面に順に入り、掲載中の求人と期限を見る
  2. 自社の採用サイトの求人ページを、拠点ごとに開いて見る
  3. 求人台帳を開き、募集の状態と時給・勤務地を、媒体とサイトの表示と見比べる
  4. 採用管理の仕組みで、求人ごとの直近の応募数を見る
  5. 締めた求人の掲載終了、条件の修正、期限の延長を、媒体ごとに手配する
  6. 応募の止まった求人を拠点の営業担当に伝え、条件や原稿を見直すかを相談する
導入後(After)
  1. 人毎朝、3つの媒体の管理画面から掲載中の求人の一覧をCSVで書き出し、決まったフォルダに置く
  2. 自動決まった時刻にワークフローが動き、CSVと求人台帳と応募数を読み込む
  3. 自動自社の採用サイトの求人ページを取りに行き、表示の状態と求人の項目を取り出す
  4. 自動台帳と掲載を求人番号で突き合わせ、食い違いの候補を機械的に出す
  5. 【AI】 候補ごとに、エージェントが台帳の変更履歴・過去の対応・媒体の一覧を引いて原因を調べ、対応の種類を決める
  6. 【AI】 媒体への依頼文、拠点の営業担当への確認の文面の案を作る
  7. 自動対応の一覧を、優先度の順に採用グループのチャットへ出す
  8. 人採用担当が一覧を見て、媒体の管理画面で掲載を止める・直す、依頼を送る、拠点に確認する
  9. 人対応した結果を一覧に記録する
各工程の詳しい説明を読む
  1. 毎朝、3つの媒体の管理画面に順に入り、掲載中の求人と期限を見る
  2. 自社の採用サイトの求人ページを、拠点ごとに開いて見る
  3. 求人台帳を開き、募集の状態と時給・勤務地を、媒体とサイトの表示と見比べる
  4. 採用管理の仕組みで、求人ごとの直近の応募数を見る
  5. 締めた求人の掲載終了、条件の修正、期限の延長を、媒体ごとに手配する
  6. 応募の止まった求人を拠点の営業担当に伝え、条件や原稿を見直すかを相談する

(a)締めた求人が載り続ける。 営業担当が台帳を「充足」にしても、採用グループが気づくのは翌日の見回りか、それより後です。媒体が3つあると、2つは止めたが1つを忘れる、ということが起きます。 その間に応募が来て、「もう締め切りました」と断る連絡が増えます。

(b)条件を変えても古いまま載っている。 時給が上がったのに、媒体の1つだけが古い時給のまま、という状態です。一覧で見ると数字が1つ違うだけで、目で見比べると見落とします。 求職者から「書いてある時給と違う」と言われて初めて気づきます。

(c)期限切れと停止に気づくのが遅い。 媒体ごとに掲載の期限があり、切れると自動で掲載が終わります。媒体側の審査で掲載が止まることもあり、その連絡はメールの山に埋もれます。 募集中のつもりの求人が、実はどこにも載っていない期間ができます。

(d)応募の止まった求人が放置される。 見回りで手一杯で、応募数まで見る余裕がありません。応募が2週間ゼロの求人は、条件か原稿か媒体のどれかが合っていません。 気づいたときには、派遣先から「まだ決まらないのか」と聞かれています。

  1. 【人】 毎朝、3つの媒体の管理画面から掲載中の求人の一覧をCSVで書き出し、決まったフォルダに置く
  2. 【自動】 決まった時刻にワークフローが動き、CSVと求人台帳と応募数を読み込む
  3. 【自動】 自社の採用サイトの求人ページを取りに行き、表示の状態と求人の項目を取り出す
  4. 【自動】 台帳と掲載を求人番号で突き合わせ、食い違いの候補を機械的に出す
  5. 【AI】 候補ごとに、エージェントが台帳の変更履歴・過去の対応・媒体の一覧を引いて原因を調べ、対応の種類を決める
  6. 【AI】 媒体への依頼文、拠点の営業担当への確認の文面の案を作る
  7. 【自動】 対応の一覧を、優先度の順に採用グループのチャットへ出す
  8. 【人】 採用担当が一覧を見て、媒体の管理画面で掲載を止める・直す、依頼を送る、拠点に確認する
  9. 【人】 対応した結果を一覧に記録する

4番目を機械の突き合わせにしているのは、意図してのことです。 「台帳では充足、媒体では掲載中」のような食い違いは、規則で確実に拾えます。AIに拾わせると、300件のうち何件かを見落とす可能性が残ります。 AIにさせるのは、拾ったものの原因を調べて、何をすればよいかを案にするところです。

8番目の操作は、すべて人が行います。 媒体の掲載を止める・直すのは、媒体の管理画面での操作で、この構成からは行いません。

02今回想定するシステム構成

構成図
求人媒体3つの管理画面 ──【人】CSVを書き出してフォルダへ
求人台帳(スプレッドシート)/ 採用管理の仕組み(応募数の書き出し)
自社の採用サイト(求人ページ)
   │
   ▼【トリガー】Schedule Trigger(毎営業日 9時30分、Asia/Tokyo)
n8n のワークフロー
   ├──▶ Extract From File(Extract From CSV)で媒体の一覧を読む
   ├──▶ HTTP Request + HTML ノードで、サイトの求人ページの状態と項目を取る
   ├──▶ 求人番号で台帳と突き合わせ、食い違いの候補を出す(規則)
   ▼
AI Agent ノード(Tools Agent)+ Claude
   │  候補1件ごとに、道具を選んで引く
   │   ・台帳の変更履歴を引く      ・過去の対応の記録を引く
   │   ・媒体ごとの一覧を引く      ・求人ページを取り直す(GETのみ)
   │   ・直近の応募数を引く
   │  Structured Output Parser で決まった形のJSONを返す
   ▼
対応の一覧(スプレッドシート)→ 採用グループのチャットへ通知
   ▼【人】媒体の管理画面で操作/依頼の送付/拠点への確認
役割想定する製品代替候補
ワークフローn8nMake、Zapier、Power Automate
生成AIClaude API(n8n の Anthropic Chat Model ノード)OpenAI API、Gemini API
保管Google スプレッドシート(求人台帳、対応の一覧)SharePoint リスト
通知社内チャットメール

新しく足すのは、n8n のワークフローと対応の一覧だけです。 求人台帳、媒体の管理画面、採用サイト、採用管理の仕組みは今のままで、どれにも書き込みません。

媒体の掲載状況は、管理画面のCSVで受け取ります。 媒体によっては掲載を操作するAPIを提供していることもありますが、提供の有無と条件は媒体ごとの契約で違います。本記事は、どの媒体でも取れる「管理画面からの書き出し」を前提にします。 媒体の公開ページを機械で巡回する方法は、媒体の利用規約で禁じられていることがあるので取りません。

自社の採用サイトは、ワークフローから取りに行きます。 HTTP Request ノードは、REST API を持つアプリやサービスへ HTTP リクエストを送るノードで、オプションで応答のヘッダーとステータスコードを含める、エラーにしない(Never Error)設定ができます。ページが404になっていても止まらずに、その状態を記録できます。

求人ページの項目は、HTML ノードで取り出します。 HTML ノードの「Extract HTML content」は、CSS セレクターを指定して、属性・HTML・テキスト・値を取り出せます。求人ページに Google の求人情報の構造化データ(JobPosting)を入れているサイトなら、そこから項目を取るのが一番ずれません。

n8n を選ぶ理由は、原因を調べる順番をエージェントに任せられることです。 Tools Agent は、道具の機能を理解し、タスクに応じてどの道具を使うかを決めるとされ、少なくとも1つの道具をつなぐ必要があります。 「台帳で充足、媒体で掲載中」は、台帳の変更履歴を見れば済むこともあれば、過去の対応の記録を見て「依頼済みで媒体の反映待ち」と分かることもあります。固定の分岐で書くと、原因の数だけ枝が増えます。

03どうやって実装するのか

Step1

処理の起点を決める

毎営業日の朝9時30分に、Schedule Trigger で動かします。 媒体のCSVを書き出してフォルダに置くのが9時から9時20分の間という前提で、その後に動かします。Schedule Trigger は、ワークフローのタイムゾーンが設定されていればそれを、なければ n8n のインスタンスのタイムゾーンを使うとされ、セルフホストの既定は America/New York です。 ワークフローに Asia/Tokyo を設定しないと、日本の夜中に動きます。

Schedule Trigger を使うワークフローは、保存して公開(有効化)しないと動かないとされています。作ってテストしただけで止まっている、という形に注意します。

CSVが置かれていないときは、そのまま動かします。 置かれていない媒体は「本日の一覧なし」と通知の先頭に出し、前日の一覧で判定しません。 古い一覧で判定すると、昨日止めた求人を今日も掲載中と出します。

Step2

入力データを集める

データ中身取得元
求人台帳求人番号、案件、拠点、時給、勤務地、勤務時間、募集の状態、掲載先、更新日時スプレッドシート
台帳の変更履歴どの求人の何を、いつ、誰が変えたかスプレッドシートの履歴のシート
媒体の掲載一覧媒体の求人番号、自社の求人番号、掲載の状態、期限、表示中の時給と勤務地各媒体の管理画面のCSV
採用サイトの求人ページステータスコード、求人の項目、掲載の期限(validThrough)自社の採用サイト
応募数求人ごとの直近7日・14日の応募数採用管理の仕組みの書き出し
過去の対応の記録求人ごとの、いつ何を依頼したか・直したか対応の一覧

質を決めるのは、媒体の一覧に自社の求人番号があるかです。 媒体の求人番号だけでは、台帳と突き合わせられません。原稿を入稿するときに、自社の求人番号を媒体の「社内管理用の番号」の欄か原稿の決まった場所に入れる決まりを、最初に作ります。 入っていない求人は、件名と勤務地で突き合わせることになり、間違いが出ます。

台帳の変更履歴は、原因の切り分けに使います。 「台帳では充足、媒体では掲載中」のとき、充足にしたのが今朝なのか2週間前なのかで、対応の急ぎ方がまったく違います。

Step3

データの取得方法を決める

取るものどこからどう取るか
媒体の一覧決まったフォルダのCSVExtract From File の Extract From CSV
求人台帳と変更履歴スプレッドシート読み取りのみ
採用サイトの求人ページ台帳にある求人ページのURLHTTP Request(GET、Never Error、ステータスを含める)
求人ページの項目取得したHTMLHTML ノードで script[type="application/ld+json"] を取り出す
応募数採用管理の仕組みの書き出しCSVを同じフォルダに置き、Extract From CSV

採用サイトのページは、台帳にあるURLだけを取りに行きます。 サイト全体を巡回しません。300件を毎朝取りに行くので、HTTP Request ノードの Batching のオプションで、まとめて送る件数と間隔を決め、自社のサイトに負荷をかけないようにします。

求人ページの状態は3通りで記録します。 200で求人の項目が取れた、200だが「募集は終了しました」の表示になっている、404・410になっている。Google の求人情報の資料では、求人の募集が終わったときは、validThrough を過去の日付にする、ページを削除して404か410を返す、構造化データを外す、のいずれかとされています。 自社サイトがどの方法を取っているかに合わせて、「掲載終了」の判定を作ります。

Step4

AIへ渡す前に整形する

  1. 媒体のCSVの列をそろえる … 媒体ごとに列名と日付の書き方が違います。媒体ごとの対応表を作り、共通の列(媒体、媒体の求人番号、自社の求人番号、状態、期限、時給、勤務地)に直します
  2. 時給と勤務地を比べられる形にする … 「1,500円」「1500円〜」「時給1500円以上」を数値と記号に分けます。範囲で書かれているものは下限と上限を分けます
  3. 求人番号で突き合わせる … 台帳1行に対し、媒体ごと・サイトの掲載を横に並べます
  4. 規則で候補を出す … 下の表の6種類
  5. 前日も出した候補に印を付ける … 対応の一覧で「依頼済み」になっているものは、反映待ちとして別に出します
候補の種類規則
closed_but_listed台帳が充足・一時停止なのに、媒体かサイトで掲載中
condition_mismatch時給・勤務地・勤務時間が、台帳と掲載で違う
expiring媒体の期限まで3営業日以内で、台帳は募集中
not_listed台帳は募集中で掲載先にあるのに、媒体に無い・停止・期限切れ
no_applications台帳は募集中で、直近14日の応募が0件
unmatched媒体に掲載中だが、自社の求人番号が台帳に無い

4番目までを規則にしておくのが、この構成の土台です。 拾うべきものを拾ったかどうかを、後から規則で確かめられます。エージェントは、拾ったものの原因と対応を考える役に限ります。

Step5

AIに処理させる

させるのは、候補1件ごとに原因を調べ、対応の種類を決め、依頼文と確認の文面の案を作ることです。

させること使う道具返すもの
台帳の変更がいつ・誰によるかを確かめる台帳の変更履歴を引く変更の日時と変更者
すでに依頼済みかを確かめる過去の対応の記録を引く依頼の日時と内容
他の媒体の掲載を確かめる媒体ごとの一覧を引く同じ求人のほかの掲載先の状態
サイトの表示を取り直す求人ページを取りに行く(GETのみ)ステータスと項目
応募の止まり方を確かめる応募数を引く7日・14日の応募数
対応の種類を決める-下の表から1つ
文面の案を作る-媒体への依頼文、拠点への確認文
対応の種類中身
stop_listing媒体・サイトの掲載を止める(最優先)
fix_listing掲載の条件を台帳に合わせて直す
extend_or_close期限が近い。延長するか締めるかを拠点に確認する
relist掲載が止まっている。媒体に理由を確かめ、出し直す
review_posting応募が止まっている。条件・原稿・媒体の見直しを拠点と相談する
check_ledger台帳のほうが古い可能性がある。拠点に台帳の確認を頼む
wait依頼済みで、媒体の反映待ち

check_ledger を持たせているのが、この構成の要です。 「台帳では募集中、媒体では停止」のとき、台帳の更新を拠点が忘れているだけ、ということがよくあります。台帳を正としながら、台帳自体が古い可能性を案として出せるようにします。 決めるのは人です。

させないこと理由
媒体の掲載の操作媒体の管理画面での操作は人が行う。道具にしない
台帳の書き換え台帳を変えるのは拠点の営業担当
時給や条件の変更の提案の数字条件を決めるのは拠点と派遣先との契約
応募が止まった理由の断定理由の候補までにする
求職者への連絡この構成の範囲外
Step6

指示内容を固定する

AI Agent ノードの System Message に、次のように書きます。

あなたは人材派遣会社の採用グループで、求人の掲載状況を見回る担当です。
規則で拾われた「候補」1件ごとに、道具を使って原因を調べ、対応の種類と
文面の案を返してください。

【前提】
- 求人台帳を正とします。ただし、台帳が古い可能性があるときは
  check_ledger を選んでください。どちらが正しいかを決めないでください。
- 候補の種類は規則で決まっています。種類を変えないでください。

【調べる順番の目安】
1. 過去の対応の記録を引き、同じ求人に依頼済みの対応があるかを確かめる。
   依頼済みで3営業日以内なら wait を選ぶ。
2. 台帳の変更履歴を引き、変更の日時と変更者を確かめる。
3. closed_but_listed と condition_mismatch は、媒体ごとの一覧を引き、
   同じ求人のほかの掲載先も確かめる。
4. 採用サイトの掲載が関わるときは、求人ページを取り直して確かめる。
5. no_applications は、7日・14日の応募数を引く。

【厳守事項】
- 道具で確かめた事実だけを evidence に書いてください。
  確かめていないことを書かないでください。
- 時給・勤務地・勤務時間の数字は、台帳と掲載に書かれた値をそのまま写してください。
  新しい時給や条件を提案しないでください。
- 応募が止まった理由を断定しないでください。possible_causes に候補として
  書き、根拠になった事実を添えてください。
- 媒体への依頼文には、媒体の求人番号、自社の求人番号、直してほしい項目、
  台帳の値を必ず入れてください。
- 道具で確かめられなかったときは、needs_human を true にし、何が確かめられ
  なかったかを書いてください。
- 掲載を止める・直す・台帳を書き換える操作はしないでください。

【出力】指定のJSONの形で返してください。

「新しい時給を提案しない」を明記しないと、応募が止まった求人に「時給を50円上げる」と書きます。 一見よい案に見えますが、時給は派遣先との契約で決まっており、採用グループが決められるものではありません。 案に数字が出ると、それが決まったことのように拠点へ伝わります。

Max Iterations は、道具を呼ぶ回数の上限として使います。 既定は10回です。候補1件に10回を超えて道具を呼ぶなら、調べ方が定まっていないので、needs_human で人に回します。

Step7

出力形式を固定する

Structured Output Parser で、次の形のJSONを返させます。

{
  "candidate_id": "",
  "job_id": "",
  "media": "media_a | media_b | media_c | own_site",
  "candidate_type": "closed_but_listed | condition_mismatch | expiring | not_listed | no_applications | unmatched",
  "action": "stop_listing | fix_listing | extend_or_close | relist | review_posting | check_ledger | wait",
  "priority": "high | medium | low",
  "evidence": [
    { "source": "ledger | ledger_history | media_list | own_site | applications | past_actions", "fact": "" }
  ],
  "ledger_value": { "status": "", "wage": "", "location": "" },
  "listing_value": { "status": "", "wage": "", "location": "", "expires": "" },
  "possible_causes": [""],
  "draft_to_media": "",
  "draft_to_branch": "",
  "needs_human": false,
  "unverified": ""
}

1つ目の理由は、priority を規則で付け直せることです。 エージェントが出した priority をそのまま使わず、action が stop_listing なら必ず high にする、という規則を後段に置きます。法令に関わるものの優先度を、AIの判断に預けないためです。

2つ目は、evidence の source で、何を見て決めたかが分かることです。 採用担当は、ledger_history と past_actions を見ただけで、拠点の更新忘れか、媒体の反映待ちかを判断できます。

3つ目は、ledger_value と listing_value を並べられることです。 通知では、この2つを横に並べて出します。どこがどう違うかが一目で分かれば、媒体の管理画面を開く前に何を直すかが決まります。

action通知の出し方
stop_listing一覧の最上段。採用グループ全員にメンション
fix_listing、relist一覧の2段目
extend_or_close、check_ledger拠点への確認文と一緒に出す
review_posting週1回、まとめて拠点と相談する一覧へ
wait件数だけ出す
Step8

システムへ連携する

つなぎ先方式内容
CSVのフォルダExtract From File媒体の一覧と応募数を読む
求人台帳スプレッドシートの読み取り台帳と変更履歴を読む
採用サイトHTTP Request(GET)求人ページの状態と項目を読む
Claude APIAnthropic Chat Model ノード原因の調査と文面の案
対応の一覧スプレッドシートへの追記エージェントの出力と、人の対応の結果
社内チャット通知優先度の順に一覧を出す

書き込むのは対応の一覧だけです。 求人台帳にも媒体にもサイトにも書き込みません。求人ページを取り直す道具は、GET だけにします。 エージェントに渡す道具に、POST や PUT を送れるものを含めないでください。

Step9

人が確認する

通知を見て操作するのは、すべて採用担当です。

  1. stop_listing を最初に片付ける … 媒体の管理画面で掲載を止め、サイトの掲載を外します。止めた日時を一覧に記録します
  2. fix_listing の値を、台帳と見比べてから直す … ledger_value をそのまま入れるのではなく、台帳を開いて確かめます
  3. check_ledger と extend_or_close を拠点に送る … 文面の案を直して送ります
  4. unmatched を見る … 台帳に無い求人が載っているのは、台帳の登録漏れか、媒体での複製です
  5. review_posting は週1回まとめて拠点と相談する

2番目を省かないでください。 ledger_value はエージェントが写した値です。写し間違いはまれでも、時給の1桁の違いは、求職者にとって一番重い誤りです。

目標は、1日36分です。 CSVの書き出しと配置に10分、一覧の確認と判断に20分、依頼と確認の送付に6分という見込みです。

Step10

例外に対処する

起きること対応
媒体のCSVが置かれていない「本日の一覧なし」と通知の先頭に出す。前日の一覧で判定しない
CSVの列が変わった媒体の画面が変わった可能性。列の対応表が合わなければ、その媒体の判定を止めて通知
媒体の一覧に自社の求人番号が無いunmatched にする。件名と勤務地での突き合わせは案にとどめる
採用サイトが応答しないステータスを記録し、サイトの判定だけを止める。サイト全体の障害なら別に通知
求人ページの構造化データが取れない表示の文字から取る。取れなければ needs_human
道具の呼び出しが上限を超えたneeds_human。調べられなかったことを unverified に
同じ候補が毎日出続ける3営業日を超えた wait は high に上げる。媒体の反映が遅れているか、依頼が届いていない
台帳の状態が空欄判定しない。拠点に台帳の入力を頼む

上から2行目は、媒体の管理画面が変わったときに起きます。 列が1つずれるだけで、時給の列に勤務地が入り、全件が condition_mismatch になります。列の対応表と合わないときは判定を止めるほうが、誤った通知を300件出すより安全です。

Step11

記録を残す

  • その日に読んだ媒体のCSVと、採用サイトの取得結果(ステータスと項目)
  • 規則で出した候補の一覧
  • エージェントのJSON出力と、呼んだ道具の順番(Return Intermediate Steps を有効にして残す)
  • 採用担当の対応の結果 … 止めた・直した・依頼した・拠点に確認した、とその日時
  • 締めた求人が掲載中だった日数 … 台帳を充足にした日時から、すべての掲載が止まった日時まで

最後の行が、この構成の物差しです。 厚生労働省の資料が求めているのは「速やかに」の終了です。何日で止められているかを毎月数えれば、媒体ごとの反映の遅さと、社内の連絡の遅さが分かれて見えます。

04実装レベルの3段階

最小構成:台帳と媒体の一覧を生成AIの画面に貼り、突き合わせさせる / 1日分の食い違いの洗い出し
半自動化:上記+n8n で毎朝CSVを読み、規則で候補を出して一覧にする / 突き合わせと候補の一覧
本格構成:上記+採用サイトの取得、エージェントによる原因の調査と文面の案、優先度の順の通知 / 見回りの全体と対応の案

半自動化だけでも、③の見比べはほぼ無くなります。 規則の突き合わせなので、AIを使わなくても組めます。ただし、候補ごとに台帳の履歴と過去の対応を見に行く作業が残り、そこが毎日30分ほどかかります。 本格構成で増えるのは、原因の調査と文面です。 候補が毎日20件出るとして、1件ずつ「依頼済みか」「いつ変わったか」を調べる手間を、エージェントが引き受けます。段階を飛ばさず、半自動化の候補の一覧を2週間見てから、エージェントを足してください。 規則が正しく拾えているかを先に確かめるためです。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
20 件
1件あたり現在時間
150 分
1件あたり導入後時間
36 分
現在  20件 × 150分 ÷ 60 = 50 時間/月
導入後 20件 × 36分 ÷ 60 = 12 時間/月
月間削減時間
38h
削減率
76%
年間削減時間
456h
年間金額換算(時間単価3,000円)
137万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 拠点や職種ごとに数十件から数百件の求人を出し、複数の求人媒体と自社の採用サイトに同じ求人を載せている人材派遣会社、小売・飲食・介護・物流の会社。募集を締めた求人が媒体に残っていたり、時給を上げたのに古い条件のまま載っていたりすることが、毎月のように見つかっている場合。求人台帳をスプレッドシートで持っており、媒体の管理画面から掲載中の求人の一覧を書き出せる場合。
向いていない
  1. 求人が数件で、媒体も1つだけの場合。求人の掲載を採用代行の会社にすべて任せており、自社で掲載状況を見る必要がない場合。求人台帳が無く、どの求人が募集中かを現場への聞き取りでしか確かめられない場合。なお、募集を続けるか、条件を変えるか、媒体を変えるかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 今日の時点で、3つの媒体の掲載一覧をCSVで書き出す
  2. 求人台帳を同じ日に書き出す
  3. 生成AIの画面に、台帳と媒体の一覧を貼り、「求人番号で突き合わせ、台帳で充足・一時停止なのに掲載中のもの、時給・勤務地が違うもの、台帳で募集中なのに掲載されていないものを、表にしてください。値は書かれたまま写してください」と指示する
  4. 出てきた表を、採用担当が媒体の管理画面で1件ずつ確かめる

1日分でよいので、必ずやってください。 300件の突き合わせで何件の食い違いが出るかが、この構成を作る価値そのものです。

出てきた内容判断
締めた求人の掲載や、時給の違いが見つかったワークフローを組む段階に進む
求人番号が合わず、突き合わせられない媒体に自社の求人番号を入れる決まりが先
食い違いがほとんど無い今の見回りで足りている。応募の停滞だけを見る構成に絞る

2行目が出ることは珍しくありません。 その場合は、新しく入稿する原稿から自社の求人番号を入れ、1か月後に同じことをしてください。

08実装時につまずきやすいポイント

問題対策
媒体の一覧と台帳が突き合わない原稿に自社の求人番号を入れる。 件名での突き合わせに頼らない
前日のCSVで判定してしまう置かれていない媒体は「本日の一覧なし」。古い一覧を使わない
媒体の画面が変わり、全件が食い違いになる列の対応表と合わなければ、その媒体の判定を止める
「1,500円〜」と「1500円」が食い違いと出る前処理で数値と範囲に分ける
ワークフローが日本の夜中に動くワークフローのタイムゾーンを Asia/Tokyo にする
保存しただけで動かないSchedule Trigger は公開(有効化)が要る
エージェントが新しい時給を提案する指示で禁じる。条件は派遣先との契約で決まる
締めた求人の優先度が下がるstop_listing は規則で必ず high
採用サイトに負荷がかかる台帳のURLだけを取り、Batching で間隔を空ける
媒体の公開ページを巡回したくなる利用規約で禁じられていることがある。管理画面の書き出しを使う
依頼済みのものが毎日出る対応の記録を引き、wait にする。3営業日を超えたら上げる

上の3行が、この構成の失敗のほとんどです。 どれも突き合わせの土台の問題で、AIの出来とは関係がありません。 求人番号と列の対応表がそろえば、残りは規則とエージェントが引き受けます。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 求人の内容(時給、勤務地、勤務時間、派遣先の業種)、拠点と案件の情報、求人ごとの応募数です。応募者の個人情報は扱いません。

  1. 応募者の情報を渡さない … 応募数は求人ごとの件数だけにします。採用管理の仕組みから書き出すときに、氏名や連絡先の列を含めないでください
  2. 派遣先の名前を外部へ出さない … 台帳に派遣先の名前があっても、エージェントに渡す列から外します。 求人の突き合わせに派遣先の名前は要りません
  3. 掲載の操作を自動にしない … 媒体の掲載を止める・直すのは人です。誤って募集中の求人を止めると、その日の応募がすべて失われます
  4. 締めた求人の掲載は、法令に関わる問題として扱う … 厚生労働省の資料では、募集を終了・内容変更したら速やかに求人情報の提供を終了・内容を変更し、媒体を使っている場合は反映するよう依頼する、とされています。この構成は、その確認を毎日行う仕組みであって、法令に適合しているかを判断するものではありません
  5. 媒体の利用規約を守る … 公開ページの機械的な巡回が禁じられている媒体があります

誤りが起きた場合のリスクは、締めた求人を見落とすことと、募集中の求人を誤って止めることの2つです。 前者は規則の突き合わせで、後者は人が操作することで防ぎます。

10まず何から始めるか

1週目:自社の求人番号を原稿に入れる

媒体ごとに、自社の求人番号をどこに入れられるかを確かめ、新しく入稿する原稿から入れる決まりにします。 掲載中の原稿は、次に直すときに入れます。

2週目:1日分を突き合わせる

第8章の手順で、台帳と媒体の一覧を突き合わせます。締めた求人の掲載と時給の違いが何件あるかを数えます。

3週目:媒体ごとの列の対応表を作る

3つの媒体のCSVの列を共通の列に直す表と、時給の書き方を数値にする規則を作ります。あわせて、台帳に変更履歴のシートを足します。

4週目:規則の突き合わせを n8n で毎朝動かす

Schedule Trigger で毎朝動かし、候補の一覧をチャットに出します。この段階ではエージェントを入れず、規則が正しく拾えているかを2週間見ます。

2か月目以降: 採用サイトの取得とエージェントを足し、締めた求人が掲載中だった日数を毎月数えます。その日数が1営業日以内に収まるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-06/最終更新:2026-10-06
確認した内容情報源確認日
職業安定法の改正で求人等に関する情報の的確な表示が義務付けられたこと。募集を終了・内容変更したら速やかに求人情報の提供を終了・内容を変更すること、求人メディア等を活用している場合は募集の終了や内容変更を反映するよう依頼すること、いつの時点の求人情報かを明らかにすること厚生労働省: 職業安定法改正のポイント(リーフレット)2026-10-06
求人の構造化データ(JobPosting)の datePosted と validThrough。募集が終わった求人は、validThrough を過去の日付にする、ページを削除して404か410を返す、構造化データを外す、のいずれかとすることGoogle 検索セントラル: 求人情報の構造化データ2026-10-06
Schedule Trigger が、ワークフローのタイムゾーンかインスタンスのタイムゾーン(セルフホストの既定は America/New York)を使うこと。保存して公開しないと動かないことn8n Docs: Schedule Trigger2026-10-06
HTTP Request ノードが REST API へリクエストを送り、応答のヘッダーとステータスを含める、Never Error、Batching のオプションを持つことn8n Docs: HTTP Request2026-10-06
HTML ノードの Extract HTML content が、CSS セレクターで属性・HTML・テキスト・値を取り出せることn8n Docs: HTML2026-10-06
Extract From File ノードに Extract From CSV があることn8n Docs: Extract From File2026-10-06
Tools Agent が、道具の機能を理解して使う道具を決めること。少なくとも1つの道具をつなぐ必要があること。System Message、Max Iterations(既定10)、Return Intermediate Steps、出力パーサーの指定ができることn8n Docs: Tools Agent2026-10-06

募集の終了や条件の変更をいつまでに反映すべきかは、法令と厚生労働省の資料、媒体との契約で確かめてください。 本記事は確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0559)についてのご相談はこちらから。

AI活用について相談する
目次