ATS レジュメ生成/最適化 Skill
タスク目標
- 本 Skill の目的:ユーザーが ATS 対応のプロフェッショナルなレジュメを作成、最適化、管理できるようにすること
- 機能:レジュメ生成、レジュメ最適化、投信件受入可能性チェック、バージョン管理、ファイル出力
- トリガー条件:ユーザーが新しいレジュメの作成、既存レジュメの最適化、比較、または出力を必要とする場合
事前準備
- 依存関係:本 Skill は純粋なローカル Python ライブラリを使用してファイル解析と出力を行います(外部サービスやネットワークへの依存は一切ありません)
pdfplumber>=0.10.0 # PDF レジュメ解析 python-docx>=1.1.0 # DOCX 生成 reportlab>=4.0.0 # PDF 生成(CJK フォント内蔵、純 pip インストール;未インストール時は HTML に自動フォールバック) - ディレクトリ準備:カレントワーキングディレクトリにバージョン管理用ディレクトリを作成
mkdir -p .resume-versions
中核原則
ハードルール
- ユーザーの経歴・データを絶対に捏造しない:不足している内容は
【プレースホルダー】で埋め、「最小補充リスト」を出力する - ATS フレンドリー:デフォルトはシングルカラム、テーブル・テキストボックス・アイコン不使用;標準のセクション見出しを使用する
- 投信件受入可能性:診断レポートでは、HR の初期スクリーニングの視点から、職種とタイトルの一致、経験年数・勤務地・連絡先・就労権限・着任時期の明示、および写真・年齢・結婚・配偶者・政治的見解・希望給与など対象市場で禁忌とされる情報がないかをチェックする
- 完全出力:常に ResumeIR JSON、診断レポート、投信件受入可能性の結論、書き換え後のレジュメ本文を出力する;ファイル出力は必要に応じてローカルスクリプトで生成する(「ファイル出力」セクション参照)
- ユーザー入力のコスト最小化:テキストの貼り付けやファイルのアップロードを優先的にサポートし、重要なフィールドが不足している場合のみ追加で質問する
出力構造
すべての操作は以下の3パートを出力する必要があります(ファイル出力は必要に応じて生成):
- ResumeIR JSON:固定フィールド名、ResumeIR.v1 Schema に準拠
- 診断レポート:問題リスト + 深刻度 + 提案、診断レポート仕様 に準拠
- 投信件受入可能性の結論:
application_acceptabilityとして、「今すぐ応募できるか / HR の初期スクリーニングでどこが引っかかるか / まず何を補うべきか」を回答する - 書き換え後のレジュメ本文:プレーンテキストプレビュー
- (オプション)出力ファイル:ユーザーが DOCX/PDF を必要とする場合、
scripts/render_resume.pyを呼び出してローカル生成する
操作手順
モード選択
ユーザーのニーズに応じてモードを選択:
- モード 1:レジュメ生成(ゼロから):ユーザーがゼロからレジュメを作成するのを支援
- モード 2:レジュメ最適化(既存あり):ユーザーの既存レジュメをベースに最適化
すべてのモードでオプション入力が可能:
- JD(ユーザーが原文を貼り付け)
- 対象職種:target_title / target_level(中国:P6/P7、シニア/エキスパート/マネージャー;米国テック職:Senior/Staff、L5/L6、SDE II 等)
- 言語:zh-CN / en-US
- 業界:インターネット/AI/データ/開発/運用/営業/管理部門等
- テンプレート:template_id(デフォルト cn_ats_a4_v1)
モード 1:レジュメ生成(ゼロから)
ステップ 1:情報収集
最小限の質問で、以下の情報を収集する:
- 基本情報:氏名、電話番号、メールアドレス、在住都市
- 対象職種:target_title、target_level、target_industry
- 直近2~3の職歴:各職歴に会社名、役職、開始・終了日、3つの成果ポイント
- 学歴:学校名、学位、専攻、卒業年
- スキル:主要スキル(primary)と副次的スキル(secondary)
ステップ 2:ResumeIR の生成
収集した情報を ResumeIR 形式に変換する(完全なフィールドは ResumeIR.v1 Schema 参照)。不足フィールドは 【プレースホルダー】 で埋める。最小限のスケルトン例:
{
"meta": {"version": "1.0", "language": "zh-CN", "locale": "zh-CN"},
"basics": {"name": "张三", "phone": "【プレースホルダー】", "email": "【プレースホルダー】", "target_title": "プロダクトマネージャー"},
"summary": "",
"skills": {"primary": ["要件分析", "データ分析"], "secondary": []},
"work": [{"company": "某社", "title": "プロダクトマネージャー", "start": "2021-06", "end": "present",
"bullets": ["主導して……により……を20%向上"]}],
"projects": [],
"education": [{"school": "【プレースホルダー】", "degree": "学士", "start": "", "end": ""}]
}
ステップ 3:初版レジュメの出力
- ResumeIR JSON を出力
- プレーンテキストプレビューを出力(標準順序でレイアウト)
- 診断レポートを生成(完全性を重点的にチェック)
- 投信件受入可能性の結論を生成:
ready / needs_fix / do_not_submit、HR 初期スクリーニングで引っかかる問題を最大3つ列挙 - 最小補充リストを出力(最大8つの質問)
ステップ 4:バージョン保存
自動的に最初のバージョンとして保存:version_name = "{target_title}-{date}-{lang}"
モード 2:レジュメ最適化(既存あり)
ステップ 1:レジュメ解析
- ユーザーがファイルをアップロードした場合(PDF/DOCX/TXT):
scripts/parse_resume.pyを呼び出してテキストを抽出 - ユーザーがテキストを貼り付けた場合:そのテキストを直接使用
ステップ 2:エコーバック確認
以下のキーフィールドをユーザーにエコーバックし、解析の正確性を確認する:
- 氏名
- 直近の会社
- 直近の役職
- 推定勤務年数
ステップ 3:JD の収集(オプション)
ユーザーに対象の JD があれば貼り付けるよう質問する
ステップ 4:ResumeIR と診断レポートの生成
- レジュメテキストから情報を抽出し、ResumeIR を生成(不足は
【プレースホルダー】) - 診断レポートを出力(スコア 0-100、問題リスト + 深刻度 + 提案)
- 投信件受入可能性の結論を出力:職種マッチ、ファーストビューの可読性、連絡先、勤務地/着任時期/就労権限、市場禁忌情報、HR 初期スクリーニングを満たす職務エビデンス
- 書き換え後の ResumeIR を生成
- プレーンテキストプレビューを出力(ユーザーがファイルを必要とする場合、後で render_resume.py を呼び出して出力)
ステップ 5:バージョン保存
自動的に最初のバージョンとして保存:version_name = "{target_title}-{date}-{lang}"
レジュメ書き換え規範
職歴 bullet の記述方法
各 bullet は以下の構造に従う必要があります:
動作動詞 + タスク + 方法/ツール + 結果(指標)
例:
- ❌ 誤り:データ分析とレポート生成を担当
- ✅ 正しい:Python と SQL を用いてユーザー行動データを分析し、A/B テストにより製品機能を最適化して、DAU を 20% 増加させた
定量化の要件
- 可能な限り具体的な数字、パーセンテージ、金額などの定量指標を使用する
- 定量化できない場合は
【メトリック】プレースホルダーを使用し、補充リストでその旨を通知する
JD キーワードカバレッジ(JD がある場合)
- プライマリースキルに対してキーワードカバレッジを実施する(12個以内)
- bullets の中で自然に表現し、不自然なキーワードの詰め込みは避ける
バージョン管理
バージョン保存
スクリプトを使用して現在の ResumeIR を保存:
python3 scripts/version_manager.py save --version-name "プロダクトマネージャー-2024-01-15-ja" --resume-ir "resume_ir.json"
バージョン命名
python3 scripts/version_manager.py rename --old-name "v1" --new-name "プロダクトマネージャー-2024-01-15-ja"
バージョン比較
python3 scripts/version_manager.py compare --version1 "v1" --version2 "v2"
バージョンロールバック
python3 scripts/version_manager.py rollback --version-name "v1"
ファイル出力
ローカル出力(純 Python、外部サービス/ネットワーク不要)
ユーザーが出力を要求した場合、現在の ResumeIR を JSON として保存した後、スクリプトを呼び出す:
python3 scripts/render_resume.py --resume-ir "resume_ir.json" --output-formats "docx,pdf" --output-dir ./out
出力は段階的ダウングレード方式を採用し、どの環境でも利用可能なファイルを生成する:
- DOCX:python-docx で生成、シングルカラム、標準見出し、テーブル/テキストボックス無し、ATS フレンドリー(応募推奨形式)
- PDF:reportlab + 内蔵 CJK フォントで直接出力(純 pip、システムフォント/ライブラリ不要);reportlab が未インストールの場合は、自動的に印刷最適化 HTML を出力し、「ブラウザで開いて Ctrl+P で PDF として保存」と案内する
- スクリプトはリモートサービスに依存せず、clone してすぐに実行可能
利用可能なスタイル
cn_ats_a4_v1(中国語、デフォルト)/en_ats_a4_v1(英語);実際の言語は ResumeIR のmeta.languageで決定される- 確認:
python3 scripts/render_resume.py --list-templates - バイリンガルまたは英語レジュメを作成する場合は、references/en-resume-conventions.md を参照(動作動詞ライブラリ、写真/年齢/婚姻禁止、1ページ優先、英語の日付形式 MMM YYYY、定量優先)
- 米国テック職(SWE/PM/DS)向け:assets/examples/ にある
en-US-software-engineer.json、en-US-product-manager.json、en-US-data-scientist.jsonの3つのレンダリング可能なサンプルを直接参照可能(LinkedIn/GitHub、米国職級、p99/QPS/SLA など米国テック系メトリクスを含む);meta.language=en-USの場合、レンダリングレイヤーが自動的に英語のセクションタイトルを適用し、ISO 日付YYYY-MMをMMM YYYYに変換する
リソースインデックス
必須スクリプト
- scripts/parse_resume.py:レジュメ解析スクリプト、PDF/DOCX/TXT/MD 対応
- パラメータ:位置引数
<ファイルパス>(--input-file <パス>も互換) - 出力:JSON
{"text": "...", "format": "pdf|docx|txt", "pages": N, "success": true};失敗時は{"error": "...", "exit_code": N}
- パラメータ:位置引数
- scripts/version_manager.py:バージョン管理スクリプト
- パラメータ:
save/rename/compare/rollback+ 対応するパラメータ - 出力:バージョン操作結果
- パラメータ:
- scripts/render_resume.py:ローカル出力スクリプト(DOCX/PDF/HTML、外部サービス不要)
- パラメータ:
--resume-ir <JSON ファイル>、--output-formats docx,pdf,html、--output-dir、--file-name - 出力:DOCX / PDF(または HTML フォールバック)ファイル
- パラメータ:
領域別リファレンス
- references/resumeir-schema.md:ResumeIR.v1 Schema 定義(読み取りタイミング:ResumeIR の生成または解析時)
- references/diagnostic-report-spec.md:診断レポート出力仕様(読み取りタイミング:診断レポート生成時)
- references/en-resume-conventions.md:英語レジュメ規約(読み取りタイミング:バイリンガル/英語レジュメ生成時)
対話フロー例
シナリオ 1:ゼロからのレジュメ生成
ユーザー:レジュメを作成して
エージェント:はい、レジュメ作成を支援します。以下の情報を教えてください:
1. 対象職種は何ですか?
2. 現在の職務状況(会社/役職/勤務年数)は?
...
[情報収集]
エージェント:初版レジュメを生成しました。以下が分析です:
[診断レポート]
最小補充リスト(8つの質問):
1. 具体的な連絡先(電話番号/メールアドレス)を教えてください
2. 最初の職歴で言及された【メトリック】の具体的な数値は?
...
シナリオ 2:既存レジュメの最適化
ユーザー:このレジュメを最適化して [ファイルアップロード]
エージェント:[レジュメ解析] あなたのレジュメから以下の情報を抽出しました。確認してください:
氏名:张三
直近の会社:某テクノロジー企業
直近の役職:プロダクトマネージャー
勤務年数:3-5年
対象となる JD はありますか?あれば貼り付けてください。
[JD がある場合]
エージェント:最適化が完了しました。診断レポートは以下の通り:
総合スコア:72/100
問題リスト:
[P0] 職歴部分に定量指標が不足しています(重大)
提案:各 bullet に具体的な数字やパーセンテージを含めてください
書き換え例:「製品の反復開発を担当」→「5つの製品反復開発を主導し、ユーザー定着率を15%向上」
...
不足リスト(JD で要求されているがレジュメにないもの):
1. SQL スキル(JD で明確に要求)
最小補充質問:SQL を使用した経験はありますか?どのようなシナリオで?
[書き換え後のレジュメを出力]
シナリオ 3:ファイル出力
ユーザー:このレジュメを出力して
エージェント:DOCX と PDF ファイルを生成しています... [render_resume.py を呼び出し]
生成されたファイル:
- 张三-プロダクトマネージャー-2024-01-15.docx
- 张三-プロダクトマネージャー-2024-01-15.pdf
シナリオ 4:バージョン比較
ユーザー:v1 と v2 を比較して
エージェント:[version_manager.py compare を呼び出し]
主な差異:
1. 職歴 - 某テクノロジー企業(2019-2022)
v1: 製品設計と要件分析を担当
v2: 8つの製品反復開発を主導し、データドリブン最適化によりユーザー満足度を25%向上
2. スキル - primary
v1: ["製品設計", "要件分析", "プロジェクト管理"]
v2: ["製品設計", "要件分析", "プロジェクト管理", "データ分析", "SQL", "A/B テスト"]
提案:v2 の内容がより充実しているため、応募には v2 の使用を推奨します。
シナリオ 5:バージョンロールバック
ユーザー:v1 にロールバック
エージェント:[version_manager.py rollback を呼び出し]
v1 バージョン(プロダクトマネージャー-2024-01-10-ja)にロールバックしました
注意事項
失敗時のフォールバック
- レジュメ解析失敗:ユーザーにプレーンテキストの貼り付けを依頼する;または「学歴/職歴/プロジェクト」のセクションごとに分けて貼り付けてもらう
- 情報不足:
【プレースホルダー】+ 最小補充リスト(最大8質問) - JD が長すぎる場合:職務内容と応募資格の2セクションのみ抽出し、残りは無視する
- 生成内容が漠然としている場合:各 bullet に「結果/影響」を含めるよう強制し、含まれない場合は P1 問題としてマークし、書き換え例を提示する
ATS フレンドリー性(「生成/出力」するレジュメに適用;ユーザーがアップロードしたファイルを解析する際は、テーブル内容を通常通り読み取ってよい)
- 標準セクション見出しを使用する(職歴、学歴、スキル等)
- テーブル、テキストボックス、アイコン、画像の使用を避ける
- デフォルトはシングルカラムレイアウト
- 標準フォント(Arial、Calibri など)を使用する
- 特殊文字や装飾要素の使用を避ける
品質保証
- すべての bullet は動作動詞で始める(「主導」「設計」「実装」「最適化」など)
- 各 bullet に明確な結果や影響があることを確認する
- 「担当」「参加」などの弱い動詞は避ける
- 能動態を優先的に使用し、受動態を避ける
使用例
例 1:ゼロからのレジュメ生成(中英バイリンガル)
- 機能説明:ユーザーがゼロから中英バイリンガルレジュメを作成するのを支援
- 実行方法:エージェントとの対話 + スクリプトによるバージョン保存
- キーパラメータ:language=zh-CN/en-US、target_title、target_level
- 手順:
- 基本情報と経歴を収集
- 中国語版 ResumeIR を生成
- 英語版 ResumeIR を生成(自動翻訳)
- 2つのバージョンとして保存(中国語版と英語版)
例 2:JD に基づくレジュメ最適化
- 機能説明:特定の JD に合わせてレジュメ内容を最適化
- 実行方法:エージェント分析 + スクリプト解析
- キーパラメータ:JD テキスト、元のレジュメファイル
- 手順:
- 元のレジュメを解析
- JD 要件を分析
- 比較して不足箇所を特定
- JD キーワードをカバーするようレジュメを書き換え
- 比較結果と最適化提案を出力
例 3:複数バージョン管理
- 機能説明:複数のレジュメバージョンを作成し、比較して最適なバージョンを選択
- 実行方法:スクリプトによるバージョン管理
- キーパラメータ:version_name、resume_ir
- 手順:
- v1 バージョンを保存
- 修正後 v2 バージョンを保存
- v1 と v2 を比較
- 最適なバージョンにロールバック
- 最終バージョンを出力