こんにちは、アサヒリンクスです。この記事は、代表コバが現場で蓄積してきた知見をもとに、AIを活用して構成・執筆し、弊社にて最終チェックを行ったものです。
IT・SaaS 企業の人事採用チームにとって、求人原稿の作成は「何度も繰り返すわりに、なかなか型化できない」業務の代表格です。ポジションごとに求めるスキルセットが違い、ターゲットとなる候補者層も異なるため、毎回ゼロから文面を考えることになりがちです。その結果、「同じようなコピーになってしまう」「書いた人の熱量で品質がぶれる」という悩みを多くの採用担当者から耳にします。Claude を活用すると、ターゲット別に文面を出し分けながら、一定品質の求人原稿を短時間で量産できるようになります。本記事では、IT・SaaS 企業の人事採用部門での Claude 活用法を、プロンプトテンプレートと実装ステップを交えてご紹介します。
求人原稿作成に Claude を使う意味——なぜ今、採用チームが AI に注目するのか
採用原稿が抱える「品質ムラ」と「コスト問題」
IT・SaaS 企業の採用市場では、エンジニア・PdM・カスタマーサクセスといった職種ごとに訴求軸が大きく異なります。経験豊富なシニアエンジニアに向けた原稿と、第二新卒の未経験エンジニアに向けた原稿では、技術スタックの深掘り度合いや「入社後に何ができるか」のフレーミングが根本から変わります。
しかし現実には、採用担当者の工数が限られているため、「過去の原稿を少し直して流用する」か「人材紹介会社のひな形を使い回す」パターンが多く見られます。この運用では、ターゲットごとの訴求精度が落ち、結果として応募率や内定承諾率に影響が出ます。
Claude を組み込むと、ターゲット像(ペルソナ)と訴求軸のリストをインプットするだけで、複数バリエーションの原稿を素早く生成できます。人間が担うべき「経験談の肉付け」や「最終チェック」に集中できる時間が生まれ、原稿作成にかかる工数を 30〜50% 程度削減できるケースが報告されています。
Claude が求人原稿作成に向く理由
Claude は長文の生成と細かい指示の遵守を両立させやすいモデルです。特に Claude Sonnet 4.6 は、「ターゲットに合わせて文体を変えながら、フォーマットの制約(文字数・見出し構成)は守る」というバランスが取りやすく、本番ワークロード向けの主力モデルとして採用業務にも適しています。求人原稿のような「構造が決まっている中で表現を変える」タスクでは、Sonnet クラスのモデルで十分な品質が得られます。複数ポジションを同時に生成するバルク処理には Batch API を組み合わせると、コストを半額程度に抑えられます。
ターゲット別文面出し分けの設計——ペルソナマッピングから始める
採用ターゲットを「3軸」で定義する
求人原稿をターゲット別に出し分けるには、まず「誰に読んでほしいか」を言語化する必要があります。IT・SaaS 企業の採用でよく使われる定義軸は次の 3 つです。
- 経験年数・スキルレベル:シニア(5年以上)/ミドル(3〜5年)/ジュニア(〜3年)/未経験転職
- 現在の立場:事業会社のインハウス/SIer・受託開発出身/スタートアップ在籍中/フリーランス
- 転職動機の優先順位:技術成長重視/年収アップ重視/働き方・リモート重視/プロダクトへの共感重視
この 3 軸をかけ合わせると、たとえば「SIer 出身のミドルエンジニアで、技術成長よりも年収アップを優先している」というペルソナが浮かび上がります。Claude へのプロンプトにこのペルソナ定義を渡すことで、そのターゲットに響く言葉選びと訴求軸に自動的に調整されます。
ペルソナ定義をプロンプトに組み込む実装ポイント
Claude Sonnet 4.6 を使う場合、system プロンプトに「会社・ポジション・カルチャーの不変情報」を、messages のユーザーターンに「今回のターゲットペルソナと強調したい訴求軸」を渡す構成が効果的です。不変情報は Prompt Caching でキャッシュさせると、複数ターゲット分を連続生成するときに入力コストを大幅に圧縮できます。
import anthropic
client = anthropic.Anthropic()
COMPANY_PROFILE = """
会社名: ○○株式会社(ITツール提供 SaaS 企業)
事業内容: 中小企業向け人事労務 SaaS の開発・運営
採用ポジション: バックエンドエンジニア
技術スタック: Python / FastAPI / PostgreSQL / AWS / GitHub Actions
チーム規模: エンジニア 12名、うちバックエンド 5名
リモート: フルリモート可(月1回出社推奨)
"""
def generate_job_description(persona: str, priority_appeal: str) -> str:
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=2000,
system=[
{
"type": "text",
"text": f"""あなたは採用コピーライターです。以下の会社・ポジション情報をもとに、
指定されたターゲットペルソナ向けの求人原稿を作成してください。
{COMPANY_PROFILE}
出力形式:
- タイトル(40字以内)
- キャッチコピー(30字以内)
- 仕事内容(200〜300字)
- 求める人物像(箇条書き 4〜6項目)
- 待遇・働き方のポイント(100字以内)
""",
"cache_control": {"type": "ephemeral"}
}
],
messages=[
{
"role": "user",
"content": f"ターゲットペルソナ: {persona}\n重点訴求軸: {priority_appeal}"
}
]
)
return response.content[0].text
# ターゲット別に 3 パターン生成
targets = [
("SIer出身5年目・年収アップ重視", "技術的なモダン化経験と年収レンジの明示"),
("スタートアップ在籍中・技術成長重視", "チャレンジングな開発課題とOSSへの貢献"),
("未経験転職志望・リモート重視", "オンボーディング制度と柔軟な働き方"),
]
for persona, appeal in targets:
result = generate_job_description(persona, appeal)
print(f"=== {persona} ===\n{result}\n")
このコードでは、会社プロフィールを system プロンプトにキャッシュさせ、ペルソナを変えながら 3 パターン連続で生成しています。2回目以降のリクエストではキャッシュヒットし、入力コストが通常の 10% 程度まで下がります。
プロンプトテンプレート設計——5 つの要素で再現性を高める
求人原稿プロンプトの基本構造
IT・SaaS 企業の採用チームで Claude を使い始めるとき、「どうプロンプトを書けばいいかわからない」という声をよく聞きます。代表コバが対応してきた案件では、求人原稿プロンプトを次の 5 要素で構成することで、再現性の高いアウトプットが得られています。
- 役割定義:「あなたは IT 業界専門の採用コピーライターです」のように Claude に役割を与える
- 会社・ポジション情報:事業内容、技術スタック、チーム規模、カルチャーを箇条書きで渡す
- ターゲットペルソナ:経験年数、現職の立場、転職動機の優先順位を明示する
- 訴求軸の指定:「年収レンジを数字で出す」「入社後の成長ストーリーを書く」等の具体指示
- 出力フォーマット制約:文字数・セクション構成・禁止表現(「アットホーム」等)を明示する
この 5 要素を揃えると、担当者が変わっても同じ品質水準の原稿が生成されます。チームで使うときは、会社・ポジション情報と出力フォーマット制約を Prompt Caching でキャッシュし、ターゲットペルソナと訴求軸だけを変えて呼び出す設計が効率的です。
採用媒体別の調整プロンプト例
求人原稿は掲載媒体によって最適な文体や長さが異なります。LinkedIn と LAPRAS、Green などでは読者層や期待される原稿スタイルが違うため、媒体名をプロンプトに含めて出し分けるのが効果的です。
def generate_for_media(base_jd: str, media: str, tone: str, length: str, emphasis: str) -> str:
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1500,
messages=[{
"role": "user",
"content": f"""以下の求人原稿を {media} 向けにリライトしてください。
元原稿: {base_jd}
文体: {tone} / 分量: {length} / 強調: {emphasis}
事実(技術スタック・待遇)は変えず、訴求軸と表現のみ媒体向けに調整してください。"""
}]
)
return response.content[0].text
# 例: LinkedIn 向け(プロフェッショナル志向・英語併記可)
linkedin_jd = generate_for_media(master_jd, "LinkedIn", "プロフェッショナル", "300〜400字", "事業フェーズとインパクト")
# 例: LAPRAS 向け(技術者コミュニティ・OSS 活動への理解)
lapras_jd = generate_for_media(master_jd, "LAPRAS", "技術者向け具体的", "500〜700字", "技術スタックとコードレビュー文化")
まず Claude で「マスター原稿(最も詳細な版)」を 1 本作り、そこから各媒体向けにリライトさせる 2 段階の生成フローを取ることで、情報の整合性を保ちながら媒体最適化できます。
応募率を上げる文面要素——Claude に指示するポイント
応募につながる「3つの言語化」
採用原稿の応募率に影響する要素の中で、Claude の活用が特に効果的なのは「言語化が難しい 3 つのポイント」です。
1. 入社後 6 ヶ月のリアルなイメージ:「どんな業務から始まり、何ができるようになるか」を具体的に書くと離脱率が下がります。Claude にオンボーディングのプロセスや、最初の四半期で担う典型的なタスクを渡してドラフトさせると、採用担当者が一から書くより細かい粒度で表現できます。
2. 技術的な成長ストーリー:「入社後にどんな技術課題に向き合えるか」は、エンジニア候補者が最も気にするポイントのひとつです。現在の技術的負債や今後のロードマップを Claude に渡し、「ジュニア→ミドルエンジニア目線での成長機会を 200 字で書いて」と指示すると、求人票では書きにくいリアルな内容が引き出せます。
3. カルチャーの具体的な場面描写:「チームワークを大切にしています」のような抽象的な表現ではなく、「週次の振り返り MTG でメンバーが自由に改善提案を出せる」といった場面を描くことで信頼感が増します。Claude に「カルチャーを体現した具体的な場面を 3 パターン生成して」と指示すると、候補者が実際の職場をイメージしやすい文面が得られます。
NGワードチェックと表現統一の自動化
求人原稿には「アットホームな職場」「やる気がある方」といった意味が曖昧な表現や、特定の属性に偏った表現が混入しやすいです。Claude に NGワードリストと代替表現を渡して「チェック→修正提案」をさせることで、表現の質を一定水準に保てます。
NG_WORDS = [
"アットホーム", "やる気がある", "向上心のある",
"若い方", "体力に自信がある", "ガツガツしている",
"家族のような", "お気軽に", "実力次第で稼げる"
]
REPLACEMENT_GUIDE = """
- 「アットホーム」→ 「週1回のチームランチなど、メンバーが互いの状況を把握し合える文化があります」
- 「やる気がある」→ 「自ら課題を見つけ、改善提案を主体的に進めた経験がある方」
- 「向上心のある」→ 「業務外でも技術トレンドを追い、学習を継続してきた方」
"""
def check_and_fix_job_description(jd: str) -> str:
ng_found = [w for w in NG_WORDS if w in jd]
if not ng_found:
return jd
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=2000,
messages=[
{
"role": "user",
"content": f"""以下の求人原稿に含まれる曖昧・不適切表現を修正してください。
【原稿】
{jd}
【検出された NG ワード】
{', '.join(ng_found)}
【修正ガイドライン】
{REPLACEMENT_GUIDE}
修正後の全文を出力してください。修正箇所には【修正】タグを付けてください。"""
}
]
)
return response.content[0].text
大量ポジションへの対応——Batch API で採用シーズンをのりきる
採用計画のスプレッドシートから一括生成する
IT・SaaS 企業では、期初や資金調達直後に複数ポジションの求人を一斉に出すケースがあります。10〜30 ポジション分の原稿を 1〜2 週間で準備しなければならない場面では、Batch API が威力を発揮します。
採用計画のスプレッドシートから「ポジション名・必要スキル・想定年収・ターゲット像」を CSV に書き出し、各行に対してプロンプトを組み立てて Batch API に投入する流れです。通常の Messages API の 50% 程度のコストで、24 時間以内に全件処理が完了します。
import anthropic
import json
import csv
client = anthropic.Anthropic()
def build_jd_request(custom_id: str, position_data: dict) -> dict:
return {
"custom_id": custom_id,
"params": {
"model": "claude-sonnet-4-6",
"max_tokens": 2000,
"system": "あなたは IT・SaaS 企業専門の採用コピーライターです。",
"messages": [
{
"role": "user",
"content": f"""以下の情報をもとに求人原稿を作成してください。
ポジション: {position_data['position']}
必要スキル: {position_data['skills']}
想定年収: {position_data['salary']}
ターゲット: {position_data['target']}
出力形式:
- タイトル(40字以内)
- リード文(150字以内)
- 業務内容(200〜300字)
- 求める人物像(箇条書き 4〜6項目)
- 待遇・働き方(150字以内)"""
}
]
}
}
# CSV から求人データを読み込み
requests = []
with open("positions.csv", encoding="utf-8") as f:
reader = csv.DictReader(f)
for i, row in enumerate(reader):
requests.append(build_jd_request(f"position-{i+1:03d}", row))
# バッチ作成
batch = client.messages.batches.create(requests=requests)
print(f"Batch ID: {batch.id}")
print(f"投入数: {len(requests)} 件")
# → 完了まで待機後、batch.id でポーリングして結果を JSONL で取得
30 ポジション分を一括投入した場合、通常 API 比で 15,000〜20,000 円程度のコスト削減になる計算です(モデル・文字数によって異なります)。
結果の確認とレビューフロー
Batch API から返ってきた原稿をそのまま公開するのではなく、採用担当者が確認するレビューフローを必ず設けることが重要です。Claude は「事実の肉付け」は担当者に任せる前提で動かすため、生成された原稿に「現場エピソードを追記する余白」を残した状態で出力させるのが効果的です。
代表コバが実案件でも観察してきたパターンとして、「AI が生成した叩き台に採用担当者が 30 分で加筆する」フローが最もチームに定着しやすいです。ゼロから書くよりも、レビュー・加筆の方が心理的ハードルが低いためです。
実装時のよくあるつまずきと対処法
出力の「揺らぎ」を抑えるには
Claude に同じプロンプトを渡しても、毎回微妙に異なる出力になることがあります。求人原稿では「今回はよかったが次回はフォーマットが崩れた」という問題が起きがちです。出力の安定性を高めるには次の 3 点が有効です。
- temperature を低めに設定する:0.3〜0.5 程度にすると表現の揺らぎが減ります。創造性より安定性が重要な場面では 0.2 以下も検討できます
- 出力フォーマットを Tool Use で強制する:Structured Output パターンで JSON スキーマを渡し、各セクションの文字数を number 型で出力させると、文字数オーバーを事前に防ぎやすくなります
- few-shot の例文を system プロンプトに含める:「このような原稿が理想形です」という例を 1〜2 件渡すと、出力スタイルが安定します。例文自体を Prompt Caching でキャッシュさせるとコスト増を抑えられます
採用媒体の文字数制限に合わせる方法
多くの求人媒体には「キャッチコピー 30 字以内」「仕事内容 500 字以内」のような文字数制限があります。Claude は日本語の文字数を厳密にカウントしないため、「〇〇字以内で書いて」と指示しても若干オーバーすることがあります。
対処法としては、生成後に Python の `len()` でチェックし、オーバーした場合は「現在 XXX 字です。YYY 字以内に短縮してください。重要な情報は残してください」と Claude に再依頼するリトライループを実装するのが現実的です。Agentic Workflow パターンで「生成 → チェック → 修正」のループを 3 回まで許可すると、ほぼすべてのケースで文字数制限内に収まります。
セキュリティとコンプライアンスの考慮点
情報管理と採用差別防止
Claude API に求人情報を渡す際は、未公開の事業計画や技術ロードマップが含まれないよう注意が必要です。Anthropic Console のワークスペース設定でログ保存ポリシーを確認し、社内の情報セキュリティポリシーと照らし合わせておきましょう。
また、日本の職業安定法では採用広告に「性別・年齢・国籍・障がいの有無」等による制限を設けることが原則禁止されています。Claude で生成した原稿に属性に関わる表現が混入することがあるため、前述の NGワードチェックに加えて「雇用機会均等法・職業安定法の観点で審査して問題のある表現を指摘して」というレビュープロンプトを最終チェックとして挟むことで、コンプライアンスリスクを下げられます。
まとめ
IT・SaaS 企業の人事採用部門が Claude を求人原稿作成に活用するポイントを整理します。
- ターゲットペルソナを 3 軸(経験年数・現在の立場・転職動機)で定義し、Claude のプロンプトに渡すことで文面の出し分けが可能になります
- Prompt Caching を活用し、会社・ポジション情報をキャッシュすることで複数バリエーション生成のコストを 1/10 程度に抑えられます
- 媒体別のリライトは 2 段階生成(マスター原稿 → 媒体向け調整)で対応すると情報の整合性を保ちやすいです
- 採用シーズンの大量生成には Batch API を活用し、コストを通常比 50% 程度に圧縮できます
- NGワードチェックと採用差別レビューを自動化し、コンプライアンスリスクを低減します
- AI 生成はあくまで「叩き台」として位置づけ、採用担当者が 30 分で加筆するフローを定着させるのが最も効果的です
Claude を採用原稿ワークフローに組み込むことで、担当者の工数削減だけでなく、「書き手によるブレ」を減らしながらターゲット訴求精度を上げることができます。まずは 1 ポジションの原稿で試してみて、レビューと加筆のフローを含めたプロセスを設計するところから始めるのがおすすめです。
本記事は代表コバの現場知見をもとに AI で構成し、弊社にて最終確認を行っています。
Claude を採用業務や自社の業務フローに取り入れる方法について、もう少し詳しく知りたい方は、お気軽にご相談ください。費用感だけ確認したい方のご連絡も歓迎しています。
→ お問い合わせはこちら