採用企業と Indeed との連携
本リソースには、採用企業向けの Indeed 連携の手順が記載されています。連携の有無に関わらず、XMLを提供する採用用企業はこのガイドラインに従う必要があります。採用企業を代理するサードパーティパートナー(人材紹介会社、採用代行会社、プログラマティックプラットフォーム、広告代理店など)は、このページで概説するXMLガイドラインに従う必要があります。
本リソースの使用方法
Indeed と適切に連携するには、本リソースの全文をよくお読みください。ご不明な点がございましたら、クライアントサクセス担当者までお問い合わせください。担当者が指定されていない場合は、こちらのWebフォームからお問い合わせください。
以下の順序で連携することが重要です。
- XML Jobフィード
- Indeed エントリー(IA)の追加
- 応募データの受信とスクリーニング用の質問
- エンドツーエンドで連携をテストして、XMLの信頼性、Indeed エントリーの利用、そしてスクリーニング用の質問の取得を、企業側で継続的に監視できることを確認
XML Jobフィード
Indeed の XML フィードは、Indeed サイト上に表示される求人情報をリストにします。お客様に XML フィードのメンテナンスを行っていただくことで、求人がどのように表示されるかを管理することができます。また、Indeed エントリーのラベルを求人に掲示することができます。
フィードの連携に際して、担当者より詳細のフィード修正指摘が入った場合は、入稿者によって都度修正をいただく必要がございます。修正がされない場合、読み込み依頼の差し戻し、またはすでに読み込まれているフィードの読み込み停止などの対応をさせていただく可能性がございます。
XMLフィードの利用
すべての求人情報を含むXMLドキュメントを作成し、メンテナンスを行って下さい。Indeed は以下の3つの手段のいずれかによって、ファイルの変更をモニターしています。
- XML URLのクローリング
- 企業がホストするFTPサイトのクローリング(SFTPもサポート対象)
- Indeed のFTPサーバーに直接ファイルを受信(zipファイルを推奨)
重要:採用ページに掲載されているすべての求人をXMLフィードに含めてください。Indeed は、情報が不十分なXMLフィードや、一部の求人情報のみを対象としたオプトインには対応しておりません。すべての求人情報が含まれていないXMLファイルは拒否されるか、求職者への露出が制限される可能性があります。XMLには、お客様のWebサイトから求職者が入手できる情報がすべて含まれている必要がありますが、Webサイトで現在採用していない求人をXMLに含めないようにしてください。例えば、Webサイトで給与情報が示されているのであれば、XMLフィードには給与を指定する要素、すなわち<salary>
を含める必要があります。Webサイトで給与情報が示されていないのであれば、その必要はありません。
XMLで示されているURLは求人の詳細ページにリンクされ、詳細ページで求職者がログインせずに求人のすべての詳細を確認できるようにする必要があります。XMLで示されるコンテンツはすべて、現在募集している職務に関するものとしてください。
XMLフィードの例
1件の求人を含む基本的なXMLフィードの例を以下に示します。
例:基本的なXMLフィード
<?xml version="1.0" encoding="utf-8"?>
<source>
<publisher>Example Job Site</publisher>
<publisherurl>http://www.example.com</publisherurl>
<job>
<title><![CDATA[Sales Executive]]></title>
<date><![CDATA[Tue, 29 Jun 2021 22:49:39 GMT]]></date>
<referencenumber><![CDATA[unique123131]]></referencenumber>
<requisitionid><![CDATA[ab1212]]></requisitionid>
<url>
<![CDATA[http://www.examplesite.com/viewjob.cfm?jobid=unique123131&source=Indeed]]>
</url>
<company><![CDATA[ABC Hospital]]></company>
<city><![CDATA[Phoenix]]></city>
<state><![CDATA[AZ]]></state>
<country><![CDATA[US]]></country>
<postalcode><![CDATA[85003]]></postalcode>
<streetaddress><![CDATA[123 fake street Phoenix AZ, 85003]]></streetaddress>
<email><![CDATA[example@abccorp.com]]></email>
<description>
<![CDATA[1~3年のセールスの経験をお持ちで、取引成立に向けて全力で挑める方、
セールス業界で、急成長を続けるわくわくした環境でのキャリアを
お探しの方からのご連絡をお待ちしています。
[...]ストックオプションや充実した福利厚生を含む、
魅力的な給与体系が用意されています。
急成長を続ける企業として、私たちはわくわくしてやりがいのある仕事の機会を提供しています。
成長を続ける弊社内には、キャリア向上のさまざまなチャンスがあります。 ]]>
</description>
<salary><![CDATA[$50K per year]]></salary>
<education><![CDATA[Bachelors]]></education>
<jobtype><![CDATA[fulltime, parttime]]></jobtype>
<category><![CDATA[Category1, Category2, CategoryN]]></category>
<experience><![CDATA[5+ years]]></experience>
<expirationdate><![CDATA[Mon, 08 Nov 2021]]></expirationdate>
<indeed-apply-data>COVERED IN A LATER SECTION</indeed-apply-data>
</job>
</source>
XML フィードの要素(エレメント)
XML フィードは、フィードごとに1回使用されている基本的な要素と、各求人フィードで使用されている求人の要素のセットを含みます。
基本的な要素
要素 (エレメント) | 必須/任意 | 内容 | 値の例 |
---|---|---|---|
<?xml ?> |
必須 | XML宣言 | <?xml version="1.0" encoding="utf-8"?> |
<source> |
必須 | XML フィードのドキュメントのためのルートノード。 | — |
<publisher> |
任意 | この求人を投稿している企業の名前。 | 貴社のお名前 |
<publisherurl> |
任意 | この求人を投稿している企業のURL。 | http://www.example.com |
<job> |
必須 | 求人固有のメタデータをすべて含みます。Indeed で表示するには、各求人に<job> の要素を1つ含めてください。 |
以下の項目に記載した詳細をご確認ください。 |
求人情報の要素
注意
- 求人内容は、オリジナルのWebサイトと同様に、生HTMLとして
<![CDATA[]]>
セクションに記述する必要があります。HTMLは、XMLエンティティやエスケープ文字(&lt;、&gt;、&amp;)ではなく、実体参照(<,>,&)
として指定する必要があります。 - 以下のガイドラインに従っていただけない場合、お客様の求人が Indeed の検索結果に表示されなくなる可能性がありますのでご注意ください。必須フィールドが欠落している求人や、Indeed の掲載基準を満たしていない求人は、破棄されるか非表示になる可能性があります。掲載する求人に不安な点がある場合は、Indeed の掲載基準をご確認いただきますようお願いいたします。サポートが必要な場合は、採用企業様向けのページからお問い合わせください。
要素 | 必須/任意 | 内容 | 値の例 |
---|---|---|---|
<title> |
必須 | 職種名。職種名以外の雇用形態、勤務地、働き方に関する情報、キャッチコピーや見出しなどの入力はできません。 サイト上のタイトルに職種名以外の文言が含まれている場合は、XMLファイルでは職種名のみに修正ください。 | <![CDATA[セールス担当]]> |
<date> |
必須 | 求人が最初に掲載された日。 注意:貴社のサイトにこの日付が掲載されている場合、サイトでの日付とXML内での日付が一致している必要があります。 |
<![CDATA[Fri, 19 Dec 2014 22:49:39 GMT]]> |
<referencenumber> |
必須 | この求人固有の識別番号。求人の読み込みに必要なので、必ずご入力ください。掲載・更新日程等、定期的に変わる数字を使うことはNG。異なる求人に対して案件番号が重複している場合は非掲載となる場合がございます。応募が終了するまで変更しないよう注意してください。また、停止した応募を再開する際も番号は変更しないでください。 | <![CDATA[unique123131]]> |
<requisitionid> |
任意 | 求人に対する請求id(旧「外部求人ID」)。貴社のシステムで、これを使用して元の職務とその応募者を追跡する場合があります。また、貴社の公開採用サイトで表示される識別子である場合があります。 異なるフィードや場所で掲載される1つの求人に対し、同一である必要があります。ただし、固有である必要はありません。 採用企業ヘルプセンターで代理店やプログラマティックの品質に関するガイドラインをご覧ください。 |
<![CDATA[ab1212]]> |
<url> |
必須 | 貴社のサイト上での該当求人の URL。求人応募のページではなく、仕事内容を記載したページの URL を記入してください。Indeed から流入したクリック数を追跡するには、source=Indeed トークンを含めてください。 |
<![CDATA[http://www.examplesite.com/viewjob.cfm?jobid=unique123131&source=Indeed]]> |
<company> |
必須 | 検索結果に表示される企業名。例えば、同じブランドが子会社やフランチャイズ社によって複数の異なる店舗が運営されている場合、<company> には、求職者にとって雇用主が最も分かりやすい名称を記載してください。これには 直接雇用関係を結ぶ法人名(事業部、物流拠点などを除く正式名称のみ)や屋号名、勤務先施設名、ブランド名などが該当します。 |
<![CDATA[[Wavewood病院]]> |
<city> |
必須 | 求人の勤務地の市区町村及び町域まで。 | <![CDATA[港区六本木]]> |
<state> |
必須 | 求人の勤務地の都道府県。 | <![CDATA[東京都]]> |
<station> |
求人サイトに記載されている場合は、必須 | 近くに駅がない場合は必要ありません。原則駅名は1つのみ追加ください。複数の駅が追加されている場合、正しくロケーションの設定ができない場合があります。電車・地下鉄駅名のみ掲載してください。鉄道会社名・路線名・バス停の記載はご遠慮ください。 | <![CDATA[赤羽橋駅]]> |
<country> |
必須 | 求人の勤務地の国名。 | <![CDATA[JP]]> |
<postalcode> |
求人サイトに記載されている場合は、必須 | 求人の勤務地の郵便番号。 | <![CDATA[100-8602]]> |
<streetaddress> |
求人サイトに記載されている場合は、必須 | 求人の主要な勤務地の住所。町名と番地を入れてください。可能であれば、都道府県、市区町村、郵便番号など、住所をすべて入力します。住所は、勤務地に基づく求人検索の精度を上げるために Indeed が使用し、求職者に表示されることもあります。 | <![CDATA[〒108-0073東京都港区三田1-4-1]]> |
<email> |
任意 | クライアントの Indeed アカウントとひもづいたメールアドレス。クライアントの連絡先メールアドレスは Indeed のサーチクオリティチームが参考として、求人投稿を行う企業の合法性を確認する際に使用されます。 | <![CDATA[example@abccorp.com]]> |
<description> |
必須 | この求人情報の職務内容。<description> に記載される情報と<url> ページに記載される情報を必ず一致させてください。求人関連のすべての情報や掲載元サイトでのそれらの順序を含め、コンテンツが完全に一致している必要があります。Indeed では、この情報にフィルターを適用して、Indeed に関係のないボタンやリンクテキストなどの項目を削除することがあります。このフィールドに基づくプレーンテキストが Indeed の求職者に表示されます。そのためこのフィールドには、学歴や経験など、XMLの他のフィールドでも提供されるテキストが含まれ、求人関連のすべての情報が含まれている必要があります。注意:仕事内容はHTML形式で記載する必要があります。対応しているHTML要素の一覧については、フォーマットのガイドラインをご確認ください。 |
<![CDATA[
1~3年のセールスの
経験をお持ちの方。[...] ]]>
|
<salary> |
求人サイトに記載されている場合は、必須 | 給与情報。Indeedでは、時給・日給・月給・年収で設定できます。一覧表で表示されるため表記例に基づきシンプルな形で記載ください。 | <![CDATA[日給10,000円]]> <![CDATA[年収400万円~500万円]]> |
<education> |
求人サイトに記載されている場合は、必須 | 該当する求人に求められる最終学歴。 | <![CDATA[四年制大学卒業]]> |
<jobtype> |
求人サイトに記載されている場合は、必須 | 求人の雇用形態(正社員、アルバイト・パート、派遣社員、契約社員など)。複数該当する場合は複数記載可。半角コンマで区切って下さい。正社員:「正社員」「正規職員」「正職員」が一般的に使用される文言であり、正社員として反映されます。正社員という意味で「常勤」や「フルタイム」とテキスト記入しないようご注意ください。契約社員:「契約社員」「契約職員」が一般的に使用される文言であり、契約社員として反映されます。他の文言ですと、契約社員として反映されない可能性がございます。アルバイト・パート:「アルバイト・パート」「パート」「アルバイト」「非常勤」が一般的に使用される文言であり、アルバイト・パートとして反映されます。他の文言ですと、アルバイト・パートとして反映されない可能性がございます。 | <![CDATA[フルタイム, パートタイム]]> |
<category> |
任意 | カンマで区切られた求人のカテゴリのリスト。この要素は必須ではありませんが、例えば、求人を管理するために施設や部門に関する情報を追加できます。 | <![CDATA[カテゴリ1, カテゴリ2, カテゴリN]]> |
<experience> |
求人サイトに記載されている場合は、必須 | 求人応募の際に望ましい経験。 | <![CDATA[5年以上]]> |
<expirationdate> |
求人サイトに記載されている場合は、必須 | 求人の積極的な採用をやめる日付。 | <![CDATA[Mon, 08 Nov 2021]]> |
<tracking_url> |
任意 | Indeed から流入したクリック数を追跡するための、各求人に固有のURL。Indeed は、この求人がクリックされるたびに、このURLに対してGETリクエストを作成します。 | <![CDATA[https://www.examplesite.com/trackjob1234]]> |
<lastactivitydate> |
任意 | 採用企業のシステム内で行われた、この求人に対するアクションの最新のタイムスタンプ。応募者の選考や求人の修正などのアクションがあります。 | <![CDATA[Fri, 19 Dec 2014 22:49:39 GMT]]> |
新エレメント設定について
既存のエレメントに加えて下記エレメントを新しく設定できます。(任意)
要素 (エレメント) | 内容 |
---|---|
<timeshift> |
勤務時間、作業時間、シフトなど |
<subwayaccess> |
交通アクセス情報、’○○○駅から○分’など |
<rawlocation> |
‘番地やビルまでの詳細勤務地情報’ |
<expdate> |
‘掲載終了日’ |
<benefits> |
待遇・福利厚生、’交通費全額支給’など |
<rawsalary> |
詳細な給与情報 |
<hires> |
採用予定人数 |
<keywords> |
‘未経験OK’、‘残業無し’などのキーワードリスト
※Indeedの検索結果、詳細案件ページで表示したい文言に対応するコード表があり、Feedに該当コードを表記することでタグ情報を表示できます。 ※コード表は、Indeed担当にお問い合わせください。 |
<imageUrls> |
写真のURL。.png, .jpg, .bmp, .wbmp, .gif(静止画のみ対応)といった拡張子を含むものです。3:2のアスペクト比で表示されます。標準サイズは375 * 250pxで、これに合わせて写真のサイズを調整し、クロップされます。複数掲載する場合は半角コンマ(,)区切りで表記してください。 |
- キーワード、イメージURLについてはカンマ区切りで複数記載できます。
- 新エレメントについては現在テストを行いつつ Indeed へ反映を進めています。記載いただいたものが必ず表示されるとは限りません。詳しくは担当のアライアンスマネジャーにお問い合わせください。
- 既存エレメント、新エレメントともに、新しくエレメントを追加(修正)した場合、Indeed側で該当エレメントの追加設定が必要になります。変更した際はその旨お教えください。
その他注意事項
- フィードは1日1回は更新をお願いします。
- XMLフィードの内容と求人サイトの内容が全く同じ情報になるように作成をお願いします。
- テスト案件、求人サイトの案件、ショッピングモールの案件は含めないようにお願いします。>
フォーマットのガイドライン
XML内の求人情報は、Webサイトで使用されているものと同じHTMLフォーマットで記載してください。フォーマットはCDATA
タグの中に記述してください。
注意:Indeed はエスケープを使用したHTMLエンティティには対応していません。たとえば、<
ではなく<
を使用してください。以下は対応しているタグの一部です。
タグ | 説明 |
---|---|
<b> |
太字 |
<h1> ~<h6> |
ヘッダー。 注意:ヘッダータグ内のテキストは、Indeed のページ上で表示される際には、一定のサイズに変換されます。 |
<br> |
単一改行 |
<p> |
段落。Indeed では、段落タグ間に自動的に空白行が挿入されます。 |
<ul> |
順序のないリスト(箇条書き) |
<li> |
リストアイテム |
<strong> |
太字 |
<em> |
強調文字(斜体) |
<table> 、<tbody> 、<th> 、<tr> 、<td> |
基本的な表。Indeed ではセルごとに改行して表示します。 |
また、以下のような算出スタイルノードに対応しています。
<font style="font-weight:bold">Some bold text</font>
は太字で表示されます。<div><h2 style="display:inline">Label: </h2>Text</div>
は 「Label: Text」をインラインで表示します。ただし<h2>
は、デフォルトではブロック要素となります。- 段落タグの上下のmarginおよびpaddingの値は、必ず正数を入力してください。これは
<p>
タグのデフォルトの挙動です。
フォーマットの例
仕事内容のフォーマットの例
<description><![CDATA[
<h2 id="job_description">仕事内容</h2>
<ul>
<li>1~3年のセールスの経験をお持ちの方。</li>
<li> 取引成立に向けて全力で挑める方。 </li>
<li>セールス業界で、急成長を続けるわくわくした環境でのキャリアをお探しの方。</li></ul>
<font style="font-weight:bold">福利厚生</font>
<p>ストックオプションや充実した福利厚生を含む、魅力的な給与体系が用意されています。急成長を続ける企業として、私たちはわくわくしてやりがいのある仕事の機会を提供しています。成長を続ける弊社内には、キャリア向上のさまざまなチャンスがあります。 </p>
]]>
</description>
Indeed 上での表示
仕事内容
- 1~3年のセールスの経験をお持ちの方。
- 取引成立に向けて全力で挑める方。
- セールス業界で、急成長を続けるわくわくした環境でのキャリアをお探しの方。
福利厚生
ストックオプションや充実した福利厚生を含む、魅力的な給与体系が用意されています。急成長を続ける企業として、私たちはわくわくしてやりがいのある仕事の機会を提供しています。成長を続ける弊社内には、キャリア向上のさまざまなチャンスがあります。
よくある問題
以下のような問題がある場合、Indeed は貴社のXMLフィードを処理できません。また、求人が Indeed の検索結果に表示されない可能性があります。
問題 | 解決策 |
---|---|
不正な特殊文字のエンコーディング | ブラウザの「ソースを表示」機能を使用して、フィードのURLで括弧(< > )などの文字が正しく表示されているかどうかを確認してください。フィードがUTF-8文字エンコーディングなど、XML宣言を使用していることを確認します。ファイルには、エンコーディングを宣言するヘッダーが必要です。UTF-8が最もよく使用されていますが、UTF-8以外のエンコーディングを使用することもできます。XMLでは、XML標準で許容されている文字範囲を使用する必要があります。 |
求人情報がフィードにない、または求人数がフィードとオリジナル採用ページで異なる | フィードにすべての求人を含めてください。ウェブ上で公開されている募集中の求人はすべてフィードに含めてください。Indeed は検索エンジンであるため、より網羅性の高い情報のインデックス化を行います。 |
仕事内容の説明が無い、または不足している | 求人に関連するすべての文字情報を含めてください。例えば、「必須要件」 が採用企業のデータベースでは別のカテゴリに分類されている場合も、Indeed のシステムでは、<description> フィールドに該当する情報をご記載いただく必要があります。 |
詐欺または詐欺の疑いがある求人 | Indeed は、詐欺の疑いのあるものを除外するように設計されています。職務内容をわかりやすく明記してください。他企業の求人を送信する場合は、該当企業が合法的な企業であり、記載された求人が実際に募集中の案件であることを確認できるように、該当企業を入念に調査してください。 |
ファイルに古い求人がある | 古い求人や休止中の求人をXMLに含めないでください。採用が決定したら、XMLファイルから求人を削除してください。Indeed が古い求人や休止中の求人を見つけた場合、XMLの利用を続けていただけるよう、挙動の修正の依頼を貴社にご連絡します。 |
要素のNG例
要素 | NG例 |
---|---|
<title> |
職種名以外の雇用形態、勤務地、働き方に関する情報、キャッチコピーや見出しなどの入力はできません。<title><![CDATA[ 5日以上の連休取得可!県内トップクラスのカットスキルが身に付く美容師アシスタント(正社員) ]]></title> <title><![CDATA[ 美容師アシスタント ]]></title> |
<date> |
必ず依頼日より前の日付にご設定ください(求人が非表示になります。)日付が未来の日付になっている。 |
<company> |
同じ企業の元で複数の店舗を経営している子会社やフランチャイズがある場合、求職者がすぐに理解できるような、最もシンプルな形の事業名またはブランド名を記載。よみがなは記載しないでください。(例1)施設名・サロン名などがある企業様の場合そちらを記載株式会社Aが運営する『Hair Salon XX』の場合<company><![CDATA[ 株式会社A ]]></company> <company><![CDATA[ Hair Salon XX ]]></company> (例2)会社名に() カッコをつけない<company><![CDATA[ 株式会社A(Hair Salon XX) ]]></company> <company><![CDATA[ Hair Salon XX ]]></company> (例3)(株)、(有)などは不可。事業部名などを含まない正式名称のみを記載<company><![CDATA[ (株)A 関東事業部 ]]></company> <company><![CDATA[ 株式会社 A ]]></company> (例4)よみがなは記載しない<company><![CDATA[ 株式会社FREE (フリー) ]]></company> <company><![CDATA[ 株式会社FREE ]]></company> |
<city> ,<streetaddress> |
<city> タグには市区町村。<streetaddress> へは都道府県、市区町村、郵便番号など、住所をすべて記載。例)「東京都港区三田1-4-1住友不動産麻布十番ビル6階」の場合<city><![CDATA[ 港区三田1-4-1住友不動産麻布十番ビル6階 ]]></city> <city><![CDATA[ 港区三田 ]]></city><streetaddress><![CDATA[108-0073 東京都港区三田1-4-1住友不動産麻布十番ビル6階 ]]></streetaddress> 注意 勤務地の記載に不備がある場合、求人の勤務地が正しく読み込まれません。 |
<station> |
電車の駅名のみを記載。(バス停の情報などは<description> タグへ記載(<description> に記載される情報と<url> ページに記載される情報を必ず一致させる必要がある為。))例「最寄り 六本木駅 〇〇バス停」の場合。<station><![CDATA[ 最寄り 六本木駅 〇〇バス停 ]]></station> <station><![CDATA[ 六本木駅 ]]></station> 注意 勤務地の記載に不備がある場合、求人の勤務地が正しく読み込まれません。 |
<description> |
<description> に記載される情報と<url> ページに記載される情報(順番なども含む)を必ず一致させてください。このフィールドに基づくプレーンテキストが Indeed の求職者に表示される。 そのためこのフィールドには、学歴や経験など、XMLの他のフィールドでも提供されるテキストを含め、求人関連のすべての情報が含まれていることが必要。注意 仕事内容はHTML形式で記載する必要があります。 |
<salary> |
給与情報のみを記載(給与の内訳やモデル年収等は<description> タグ内に記載)例)経験有無によって年収が異なるケース<salary><![CDATA[ 年収400万円~500万円 経験者の場合年収500万円~700万円 経験5年の場合 各種手当+インセンティブを含めたモデル給与:年収650万円]]></salary> <salary><![CDATA[ 年収400万円~700万円]]></salary> 注意 給与情報は<salary> タグ以外からも抽出される可能性があるため、必ず<salary> タグのデータが表示されるとは限りません。 |
その他 | その他1初回XML申請時のサイト構成から、大幅なサイト構成の変更する場合は事前にご相談下さい。その他2エスケープ文字 (< > & 等) は使用不可となります。その他3タグはすべての求人に追加する必要があります。例えば<imageURLs> </imageURLs> または <imageURLs /> )。その他4最寄りの交通機関がバス停の場合は <description> と <subwayaccess> タグ内に記載。 |
XMLフィードに関するよくある質問(FAQ)
フィードを配信するための方法にはどんなものがありますか?
Indeed は以下の3つの手段のいずれかによって、ファイルの変更をモニターしています。
- XML URLのクローリング
- クライアントがホストするFTPサイトのクローリング(SFTPもサポート対象)
- Indeed のFTPサーバーに直接ファイルを受信(zipファイルを推奨)
Indeed は、どれくらいの頻度でXMLフィードをインデックス化していますか?
URLまたはATSで指定されているFTPサイトでクローリングされるXMLについては、最後のリクエストから6時間ごとに求人データが1日に4回更新されます。Indeed がホストしているFTPについては、新しいファイルが最大6時間ごとに受信されると、XMLフィードが更新されます。ファイルをアップロードする頻度が高くなると、事前処理が停止し、求人情報の更新が行われなくなる場合があります。
どのようなメタデータを含めることができますか?
標準フィールドが記載されてさえいれば、あとは好きなフィールド(例:<job_type>
、<branch_id>
)を含めることができます。
フィードの求人は、すべて Indeed の検索結果に表示されますか?
検索結果への表示は、Indeed の表示ルールに基づきます。Indeed のサーチクオリティチームによって、合法かつ独自性があり、職務内容と勤務地が詳細に記載され、簡単に応募できる求人が優先的に表示されます。これらの条件を満たさない求人は、検索結果に表示されないことがあります。
Indeed エントリーを利用しており、求職者が Indeed から直接応募できるようにしているのに、なぜURLを提供しなければいけないのでしょうか?
3つの理由から(Indeed エントリーのページではなく)求人内容へ誘導するURLが必要となります。
- Indeed エントリーに問題が発生した際には、求職者は求人URLへと誘導されます。
- 求職者はいつでも、Indeed から元の求人をクリックして表示できます。
- 求人内容と求人活動を確認するために、Indeed のアグリゲーションエンジンでは有効なURLが必要です。
複数の言語で同じ求人を掲載している場合はどうなりますか?
XMLでは、各言語の求人それぞれを、固有の求人として提供してください。XML内で同じ参照番号を使用した場合、最初に記載されている求人だけが Indeed に掲載されます。
複数の国で同じ求人を掲載している場合はどうなりますか?
募集中の各勤務地ごとに求人情報を提供してください。広い地域を対象とした求人でないものを広い地域に対して投稿した場合、Indeed 上でオーガニック検索では表示されません。
都道府県全体、または国全体を対象とした求人はどうなりますか?
Indeed では、市町村や都道府県、郵便番号などの要素が必須項目となっています。これらの要素に関する情報がない場合、求人はオーガニック検索では表示されません。
もし、合法的に幅広い地域を対象とした求人や、在宅勤務の求人を掲載する場合、ファイル内に含め、オーガニック検索でも表示されるように、クライアントの代わりにリクエストをお送りください。クライアントが Indeed のアカウントを持っている場合は、ログインしてサポートを受けることができます。アカウントを持っていないクライアントは、Indeed のWebサイトから Indeed に直接質問を送信できます。
Back to topIndeed エントリー(IA)の追加
求人に 簡単応募のラベルを追加し、求職者が Indeed のサイト上のみで応募を完結できるように、Indeed エントリー API をご利用下さい。
Indeed エントリーAPIを実装しデプロイするまでに、およそ2~3週間かかります。
Indeed XMLフィードをすでにご利用の場合は、Indeed エントリーの要素をフィードに追加してください。方法については、XMLフィードを利用した Indeed エントリーの追加をご覧ください。
APIトークンの生成
Indeed エントリーを実装する前に、次の手順を実行してください。
- 貴社の Indeed アカウントにサインインするか、次のページから新しいアカウントを作成します:https://secure.indeed.com/account/login
- ログインしたら、次のページで「認証情報を管理する」に移動します:https://secure.indeed.com/account/apikeys
- [新しいアプリケーションの登録]ボタンをクリックします。
- アプリケーションとWebサイトの名前を入力します。
- 認証タイプとして「Indeed エントリー」を選択し、[保存]をクリックします。
注意:Indeed の他の場所でもOAuthを使用している場合、Indeed エントリー連携用のトークンは別途保持してください。
アカウントに保存された新しい認証情報が表示されます。
Indeed エントリーのAPIトークンとして「クライアントID」を使用します。
XMLフィードを利用した Indeed エントリーの追加
Indeed XMLフィードをご利用中の場合、Indeed エントリーの設定属性をフィード内の<indeed-apply-data>
要素の中に追加してください。
Indeed エントリーの設定属性は Indeed エントリー設定パラメータの表にまとめられています。
Indeed エントリーXML要素の例
以下の例は、1件の求人と Indeed エントリー要素を含む基本的なXMLフィードを表しています。
注意:基本的な求人情報は、ここでは分かりやすく記載するために省略されていますが、実際のフィードには記載する必要があります。
基本的なXMLフィードの例
<?xml version="1.0" encoding="utf-8"?>
<source>
<publisher/>
<publisherurl/>
<job>
<title/>
<date/>
<referencenumber/>
<requisitionid/>
<url/>
<company/>
<city/>
<state/>
<country/>
<email/>
<postalcode/>
<description/>
<salary/>
<education/>
<jobtype/>
<category/>
<experience/>
<indeed-apply-data>
<![CDATA[indeed-apply-apiToken=1234ABCDE&indeed-apply-jobTitle=Professional+B
asket+Weaver&indeed-apply-jobId=Sample+ID&indeed-apply-jobCompanyName=My+Favo
rite+Company&indeed-apply-jobLocation=Austin+TX&indeed-apply-jobUrl=http%3A%2
F%2Fwww.indeed.com&indeed-apply-postUrl=https%3A%2F%2Fhookb.in%2FPxOjJqJELNH8
lZLZDkpz&indeed-apply-questions=https%3A%2F%2Fpastebin.com%2Fraw%2F0vXq9q9b%2
3]]>
</indeed-apply-data>
</job>
</source>
Indeed エントリーXML要素の制限
XMLフィードを利用して Indeed エントリーを追加する場合、以下の制限があります。
- 属性はURLエンコードされている必要があります。
- Indeed エントリーフィールドがXMLフィードに含まれている場合、そのフィールドを空白にすることはできません。空白のままにすると各求人のIndeedエントリーにエラーが生じてしまいます。
- データ属性は
indeed-apply-
のprefixを含む必要があります。data-indeed-apply-
はprefix として使用しないでください。
Indeed エントリー設定パラメータ
以下の設定パラメータを使用して、Indeed エントリーAPIを設定してください。
パラメータ名 | 必須/任意 | 内容 | 例 |
---|---|---|---|
jobUrl |
任意 | 仕事内容がすべて記載されたページの正規URL。XMLファイル内に、このURLをエンコードしてください。
注意:Indeed での応募では、応募が行われている Indeed のURLの応募ボタンにjoburlが設定されます。 |
http%3A%2F%2Fwww.yourcompany.com%2F%0Acareers%2Fyourjob123.html |
jobId |
任意 | 求人のID。求人を内部で追跡するために使用されます。 注意:このフィールドには最大256字のASCII文字を含めることができます。 |
7775e2bc62b7f77e |
jobTitle |
必須 | サイトの外部で表示される求人の職種名。(50文字まで) 注意:XMLの <title> フィールドと一致している必要があります。 |
テストエンジニア |
jobCompanyName |
必須 | 採用企業名。XML内の<company> フィールドで指定されている値と一致している必要があります。 |
貴社のお名前 |
jobLocation |
必須 | 勤務地。(50文字まで) | 東京都港区 |
jobMeta |
任意 | 記載したい任意の情報。外部には表示されませんが、post URLからの応募の際に送信されます。 | right-rail-apply-button |
apiToken |
必須 | Indeed エントリーの認証情報を使用して生成された「クライアントID」の値。APIトークンの生成を参照してください。 | your-api-token |
email |
任意 | 応募の送信に使用される採用企業のメール。
これは暗号化された値です。詳細は、暗号化と復号処理の項目をご覧ください。
postUrl が入力されていない場合、このフィールドは必須です。
注意:ATSとの連携にこのフィールドを使用することはできません。このフィールドは採用企業のみご利用いただけます。 |
b18d0be4c173dfa2b7cb7856e7c7b6f
02a563867a9df67ca208c8b9654966299 |
locale |
任意 | メールが入力されている場合、採用企業にメールを送信する際の使用言語を判別します。デフォルト言語は英語(en )、日本語版は(ja)です。
注意:このフィールドは応募者に送信される確認メールには影響しません。 |
ja |
postUrl |
必須 | Indeed が応募データを投稿するURL。XMLファイル内に、このURLを記載してください。HTTPSである必要があります。
注意:メールアドレスの指定がない場合、 postUrl は必須となります。 |
https%3A%2F%2Fwww.yourcompany.com%2Fprocess-applications |
phone |
任意 | 求人に電話番号のフィールドを表示するかどうかを示す文字列の値。
設定可能な値は、optional 、hidden 、required のいずれかです。デフォルト値はoptional に設定されています。 |
optional |
coverletter |
任意 | 採用企業への質問、自己PR、備考のフィールドが必須かどうかを示す文字列値。
設定可能な値は、optional 、hidden 、required のいずれかです。デフォルト値はoptional に設定されています。 |
required |
resume |
任意 | 履歴書の提出を必須とするかを設定したり、履歴書のアップロードのオプションがユーザーに表示されないように設定したりします。設定可能な値は、optional 、hidden 、required のいずれかです。このパラメータを含めない場合、値はデフォルトでrequired に設定されます。optional またはhidden を選択し、resumefieldsoptional またはresumefieldsrequired を含めない場合、スクリーニング用の質問を含める必要があります。注意:履歴書のファイル形式として、.pdf、.doc、.docx、.rtf、.txtに対応している必要があります。 |
required |
resumefieldsrequired |
任意 | 求職者の履歴書に含まれている必要のあるresumeフィールドのカンマ区切りリスト。このフィールドが入力されている場合、上記のphone の設定パラメータを上書きします。詳細については、Indeed エントリーのResumeフィールドの標準化セクションを参照してください。 |
phone , gender , dateOfBirth |
resumefieldsoptional |
任意 | 求職者の履歴書に含まれていることが望ましいresumeフィールドのカンマ区切りリスト。このフィールドが入力されている場合、上記のphone の設定パラメータを上書きします。詳細については、Indeed エントリーのResumeフィールドの標準化セクションを参照してください。 |
languages , education |
name |
任意 | エントリーフォームの名前フィールドを姓と名に分割するか(name="firstlastname" )、氏名を1つのフィールドにまとめるか(name="fullname" )を示す文字列値。デフォルトの値は、氏名を1つのフィールドにまとめます。 |
firstlastname |
advNum |
任意 | エントリーのコンバージョンの属性設定時に使用する広告主番号。 | 1432700306306892 |
questions |
任意 | Indeed エントリーでの応募の際に尋ねる質問をJSON形式の文字列で返すURL。質問の作成については、スクリーニング用の質問項目の追加を参照してください。また、XMLファイル内で、このURLをエンコードしてください。HTTPSである必要があります。 | https%3A%2F%2Fwww.yourcompany.com%2Fjob1234%2Fquestions.json |
Indeed エントリーのResumeフィールドの標準化
resumefieldsrequired
およびresumefieldsoptional
は、指定された応募URLに送信される応募JSONデータの一部として含まれる履歴書関連情報を指定および管理するために使用できます。Indeed は、これらの指定フィールドを収集するだけでなく、応募者の履歴書ファイルの収集に努めます。
- 求人へのすべての応募は、指定された
resumefieldsrequired
フィールドを含み、応募者に履歴書ファイルの提出を要求します。 - 指定された
resumefieldsoptional
フィールドは応募者の任意となります。resumefieldsrequired
が指定されていない場合、履歴書ファイルの添付は応募者の任意となります。
注意:resume
パラメータがhidden
に設定されている場合、応募者から履歴書ファイルは収集されませんが、resumefieldsrequired
またはresumefieldsoptional
で収集されたデータは、応募JSONデータの一部として提供されます。resume
パラメータがrequired
またはoptional
に設定されている場合、そのパラメータは無視され、resumefieldsrequired
またはresumefieldsoptional
によって履歴書ファイルが収集されます。
resumefieldsrequired
またはresumefieldsoptional
フィールドが指定されている場合、phoneパラメータは無視されます。
以下は、resumefieldsrequired
またはresumefieldsoptional
に含めることができるresumeフィールドのリストです。両方に同じresumeフィールド名が指定されている場合は、必須として処理されます。
Resumeフィールド標準化パラメータ名 | 回答が設定されるJSONノードの位置 |
---|---|
namePronunciation |
applicant.fullNamePronunciation/firstNamePronunciation/lastNamePronunciation |
phone |
applicant.phoneNumber |
dateOfBirth |
applicant.dateOfBirth |
gender |
applicant.gender |
location |
applicant.resume.json.location |
positions |
applicant.resume.json.positions |
education |
applicant.resume.json.educations |
skills |
applicant.resume.json.skills |
languages |
applicant.resume.json.languages |
certifications |
applicant.resume.json.certifications |
スクリーニング用の質問
スクリーニング用の質問を使うことで、応募プロセスの中で求職者についてさらに詳しく知ることができます。Indeed エントリーがこれらの質問を取得できるように、 JSONの形式でURL(HTTPS)に投稿してください。
質問項目の追加にあたって
注意事項
- 最大500個の質問を入力できます。ただし、Indeed のデータによると、質問項目が20件以上ある場合はコンバージョン率が急激に下がります。
- 質問のファイルのサイズは1MB以下にしてください。
- 質問のファイルは、固有の質問URLによってサーバーサイドでキャッシュされ、20分ごとに更新されます。注意:求職者が Indeed エントリープロセスを開始する際に、Indeed が要求する場合のみ、質問がキャッシュされます。
- 履歴書標準化対応の時には、Question URLの中身(JSONデータ)をご変更いただく際にURLを新規のものにご変更ください。(キャッシュを削除するため)
ja_JP
ロケールを使用して、限界値、最小値、または最大値の形式を規定します。小数点にはピリオドを使用してください。桁区切り文字は使用しないでください。type=date
の形式は、応募がサードパーティに渡される方法や、最小値と最大値の解析方法に影響します。求職者は、指定の形式ではなくロケールに応じて日付を入力しますが、検証エラーメッセージはロケールの形式になります。type=date
では、混乱を防ぐため、yy
ではなくyyyy
を使用してください。
注意:Indeed エントリー質問用ツールを使用してJSONファイルのシンタックスを確認し、スクリーニング用の質問項目の体裁を確認してください。
ベストプラクティス
- 求人に関連する質問のみを含めてください。
- スクリーニング用の質問の数はなるべく少なくしてください。求職者の中にはモバイル端末から質問に回答する方もいることを念頭に置く必要があります。
- 応募書類を妥当な項目で区切るには、pagebreakという質問(type)を使用します。JSONにpagebreakが何も含まれていない場合は、デフォルトのページ区切りが挿入されますが、これにより応募が意図しない方法で分割されてしまう場合があります。Indeed では、モバイルとPCの両方で1ページにつき最大10個の質問を表示します。
- ユーザーが履歴書から回答できる質問や、Indeed エントリーの応募プロセスですでに収集した情報(例:連絡先など)についての質問は、スクリーニング用の質問には含めないでください。
- どういった質問を含めるかについては、現地の法律を遵守してください。どのような質問が現地の法律に抵触するおそれがあるかについては、貴社の法務部にご確認ください。
- 特定の形式での回答が必要な場合、求職者がわかるように説明を記載してください。
- Indeed ではSimpleDateFormatを使用しており、mmを使用すると混乱する可能性があるため、月のフォーマットはMMにする必要があります。
スクリーニング用の質問項目のためのJSON
この項目は、すべての質問で使用されるパラメータを記載しています。具体的な質問の種類に関しては、スクリーニング用の質問項目の種類をご覧ください。
JSONスクリーニング用の質問項目パラメータ
名前 | 必須/任意 | 内容 | 設定可能な値 | 例 |
---|---|---|---|---|
id |
必須 | この質問の固有ID。 | 任意の文字列 | 強み |
type |
必須 | 質問の種類を示します。各種類についての詳しい説明は、以下の項目をご覧ください。 | textarea
text select hierarchical multiselect date file information pagebreak |
textarea |
question |
type=information およびtype=pagebreak の場合は無効
その他のすべての種類では 必須 |
応募者に表示される質問のテキスト。 | 任意の文字列 | 販売の経験はありますか ? |
text |
type=information の場合は必須。
その他のすべての種類では任意。 |
応募者に表示されるテキスト。 | 任意の文字列 | 以下の質問は任意項目です。 |
options |
type=select とtype=multiselect の場合は必須 |
ドロップダウンメニューで選択できるオプションのリスト。 | JSON | [{
"value":"1",
"label":"女性"
}] |
value |
type=select とtype=multiselect の場合は必須 |
ドロップダウンメニュー形式の質問に返される、各選択肢に対応する値。 | 任意の文字列 | 1 |
label |
type=select とtype=multiselect の場合は必須 |
ドロップダウンメニューの中の選択肢のテキスト。 | 任意の文字列 | 女性 |
required |
任意 | 質問を回答必須に設定できます。required:true が指定されていると、Indeed エントリーでは、回答フィールドに何も入力しないまま、あるいは何も選択しないままでは、回答者は先に進むことができません。required が指定されていない場合、回答は任意となり、空の回答も可能になります。 |
true | "required":true |
format |
type=date の場合は必須
type=text の場合は任意 |
使用できる入力形式。
type:text の場合、回答を整数(integer)、小数(decimal)、または番号(numeric_text)に限定できます。type:date の場合、MMを使用するSimpleDateFormatのみが回答として有効です。
|
テキストの形式
|
整数、 年月日(dd/MM/yyyy) |
limit |
任意 | type=text およびtype=textarea の場合に、回答の文字数の上限を設定します。 |
任意の整数 | 100 |
min |
任意 | format=integer またはformat=decimal では回答の最小値が設定できます。type=date では、回答は入力した日付または以降の日付になる必要があります。 |
format=integer
の場合は任意の整数、 format=decimal
の場合は任意の小数、 type=date の場合は任意の日付(指定の形式であること) |
0 |
max |
任意 | format=integer またはformat=decimal では、回答の最大値を設定できます。type=date では、回答は入力した日付または以前の日付である必要があります。 |
format=integer
の場合は任意の整数、 format=decimal
の場合は任意の小数、 type=date の場合は任意の日付(指定の形式であること) |
100 |
condition |
任意 | 前項のselect 質問がどう回答されたかという条件が、質問に付随する場合に使用。この質問を有効にする、前項の質問のid と選択肢のvalue を指定してください。
例えば、応募者に販売の経験について質問したとします。経験があると答えた場合、どの業種での販売経験があるのかを尋ねる、条件付の質問を表示出来ます。 |
JSON | "condition": {
"id": "parent1",
"value": 0} |
スクリーニング用の質問項目の種類
textarea
複数行のテキスト入力のフィールドが表示される質問。長い回答が予想される質問に使用します。
textareaの例
{
"id":"envirotext",
"type":"textarea",
"question":"Describe your ideal work environment:"
}
text
1行のテキスト入力のフィールドが表示される質問。回答が短いと予想される質問に使用します。
注意:textの質問に利用できる各種のフォーマット(integer、decimal、numeric_text)については下記の例と上記の表をご覧ください。
textの例
形式の指定がない場合:
{
"id": "city",
"type": "text",
"question": "What city are you located in?",
"required": true
}
```
Integer(整数):整数を表示。少数や先行ゼロは表示できません。
{
"id":"age",
"type":"text",
"question":"Age?",
"format":"integer",
"min":"16",
"max":"75"
}
Numeric text:先行ゼロを含む数字も表示されますが、小数は表示されません。
{
"id": "ssn",
"type": "text",
"format": "numeric_text",
"question": "Enter last 4 digits of your SSN.",
"required" : false
}
Decimal (小数): 小数や先行ゼロも含む数字が表示できます。
{
"id": "gpa",
"type": "text",
"format":"decimal",
"question": "What was your GPA?",
"required": true
}
select
応募者が1つの回答を選択できるドロップダウンメニューが表示される質問。複数の選択肢から回答を選ぶ質問に使用します。
注意:回答の選択肢が6つ以下である場合、選択肢はラジオボタンとして表示されます。選択肢が7つ以上である場合、選択肢はドロップダウンメニューとして表示されます。
selectの例
{
"id": "gender",
"type": "select",
"question": "Gender?",
"options": [{
"value": "0",
"label": "Decline to answer"
},
{
"value": "1",
"label": "Male"
},
{
"value": "2",
"label": "Female"
}
]
}
conditional
前の質問の回答に基づいて、追加で質問と応答を表示します。例えば、応募者に「18歳以上かどうか」と尋ねた場合、もし、「いいえ」と回答したら、「就労に関する必要書類の提示が可能か」などと質問できます。
conditionalの例
[{
"id": "profile-atLeast18",
"question": "Are you at least 18 years of age?",
"required": true,
"options": [{
"value": "1",
"label": "Yes"
},
{
"value": "0",
"label": "No"
}
],
"type": "select"
},
{
"id": "profile-permit",
"question": "Can you provide a work permit?",
"required": true,
"condition": {
"id": "profile-atLeast18",
"value": "0"
},
"options": [{
"value": "1",
"label": "Yes"
},
{
"value": "0",
"label": "No"
}
],
"type": "select"
}
]
hierarchical
前の回答に基づいて質問と応答をさらに表示します。例えば、応募者に県を選択してもらうとします。すると、選択肢に応じて、その県内の市のドロップダウンリストを表示できます。hierarchicalの質問は、それぞれ、都道府県、市区町村、郡のように、3つの階層まで利用可能です。
注意:hierarchicalの質問は、conditionalと類似していますが、最初の選択肢がその後に続く質問の回答を決定する階層の多い質問に対しては、 hierarchical の方がより適切です。hierarchical機能を使用することで、関連情報を収集するまでに必要になる質問の合計数を削減することができます。
hierarchicalの例
[{
"id": "hierarchical",
"type": "hierarchical",
"question": "State",
"required": true,
"options": [{
"value": "0",
"label": "California"
}, {
"value": "1",
"label": "Texas"
}, {
"value": "2",
"label": "New York"
}],
"hierarchicalOptions": [{
"id": "cali_cities",
"options": [{
"value": "0",
"label": "San Francisco"
}, {
"value": "1",
"label": "Los Angeles"
}],
"condition": {
"id": "hierarchical",
"value": "0"
}
}, {
"id": "texas_cities",
"options": [{
"value": "0",
"label": "San Antonio"
}, {
"value": "1",
"label": "Austin"
}],
"condition": {
"id": "hierarchical",
"value": "1"
}
},
{
"id": "sa_zipcodes",
"options": [{
"value": "0",
"label": "78212"
}, {
"value": "1",
"label": "78209"
}],
"condition": {
"id": "texas_cities",
"value": "0"
}
}
]
}]
multiselect
応募者が複数の回答を選択できるチェックボックスが表示される質問。複数の選択肢から回答を選ぶ質問を設定する際に使用します。
multiselectの例
{
"id": "favoritecolors",
"type": "multiselect",
"question": "Select your two favorite colors:",
"options": [{
"value": "0",
"label": "Maize"
},
{
"value": "1",
"label": "Blue"
},
{
"value": "2",
"label": "Green"
}
]
}
date
日付だけを入力できるテキストフィールドを含む質問。日付を含む回答が必要な際に使用します。
注意:このスクリーニング用の質問項目を使用する場合はformat
が必要です。このformatは、dd/MM/yyyyか、Unicode CLDRに準拠したその他のロケール固有のフォーマットにする必要があります。Indeed ではSimpleDateFormatを使用しており、mmを使用すると混乱する可能性があるため、月のフォーマットはMMにする必要があります。
dateの例
{
"id":"startdate",
"required":true,
"type":"date",
"question":"Start date?",
"format":"dd/MM/yyyy",
"min":"01/02/2014",
"max":"03/04/2014"
}
file
ファイルをアップロードするインターフェースが表示される質問。回答で証明書、ポートフォリオ、仕事のサンプルなど、ファイルのアップロードが必要な質問に使用します。応募データの受信方法のオプションに関する項で説明したとおり、回答データはcontentType
、data
、fileName
の3つのフィールドが含まれたJSON POSTリクエストとして返されます。
対応しているファイル形式:doc、docx、gif、jfif、jif、jpe、jpeg、jpg、pdf、png、rtf、tif、tiff、txt
ファイルの最大サイズ:5MB。応募ごとの最大合計サイズは15MBです(履歴書ファイルを含む)。
注意:この質問を履歴書の取得に使用しないでください。履歴書を取得するには、Indeed エントリー設定パラメータである「Resume」を使用してください。
fileの例
{
"id": "file2",
"type": "file",
"question": "Please attach a recent example of your work.",
"required": true,
"min":"1",
"max": "3"
}
information
回答を必要としないテキストを表示します。説明用のテキストや、各項目の見出しを記載するために使用します。テキスト内には、<b>
、<p>
、<br>
、<li>
、<ul>
、<ol>
、<a href=" ">
のHTML要素を使用できます。URLにはHTTPおよびHTTPSプロトコルのみが許可されています。リンクは新しいタブで開きます。
注意:<br>
を使用して、段落後の改行を強制しないでください。Indeed では、自動的に段落間に改行が挿入されます。
informationの例
[{
"id": "first_header",
"type": "information",
"text": "The next set of questions are <b>optional</b> and are for recording purposes only.
Make sure to view the <a href='http://www.eeoc.gov/employers/upload/poster_screen_reader_optimized.pdf'> EEO is the Law</a> poster.",
"fontsize": 8
}]
pagebreak
ページ上で、質問をグループごとにまとめる際に使用されます。2つのpagebreak
間に含まれるすべての質問 (type)は、同じページに表示されます。最大20問の質問を同じページにまとめることができます。
pagebreakの例
[{
"id": "page1_open",
"type": "pagebreak"
},
{
"id": "question_sample",
"type": "text",
"question": "Age?"
},
{
"id": "page1_close",
"type": "pagebreak"
}
]
JSON postの例
注: このセクションでは、採用企業に提出された応募データの内容について説明します。Indeed に提供するJSON質問ファイルの形式を変更する必要はありません。
現在、JSON postには「スクリーニング用の質問」とその「回答」が、次の2つのフォーマットで含まれています。
- 現在*のフォーマット
- 変更後のフォーマット
この2つのフォーマットについて以下で説明します。今後、「現在のフォーマット」は2021/12/31時点で廃止する予定です。
現在*のフォーマット
現在のフォーマットでは、スクリーニング用の質問とその回答は、JSONファイルの「questions」セクションに含まれています。
- question:
- questions:前の項目で説明された全質問のリスト
- answers:全回答のリスト
- url:質問が取得されたURL
- retrievedOnMillis:質問が取得された日付と時刻(単位:ms)
変更後のフォーマット
変更後のフォーマットでは、スクリーニング用の質問とその回答は、JSONファイルの「questionsAndAnswers」セクションに含まれています。
- questionsAndAnswers:(改善されたフォーマット)
- questionsAndAnswers:以下のリスト
- questions:前の項目で説明された全質問のリスト
- answer:上記の質問への回答
- url:質問が取得された URL
- retrievedOnMillis:質問が取得された日付と時刻(単位:ms)
JSON postファイルの完全な例を表示またはダウンロードするには、こちらをクリックしてください(現在のフォーマットと変更後のフォーマットが含まれています)。
*現在のフォーマット:現在のフォーマットは今後廃止される予定です。現在のフォーマットを使用して「スクリーニング用の質問とその回答」を読み込んでいる場合は、Indeed エントリーで引き続き正確な情報をすべて受信できるように速やかにご変更ください。現在のフォーマットを使用しており、変更後のフォーマットへの移行を希望している既存の採用企業またはATSは、この移行ガイドをご参照ください。
スクリーニング用の質問のテスト
Indeed エントリー質問用ツールを使用してJSONファイルのシンタックスを確認し、スクリーニング用の質問項目の体裁を確認してください。
Indeed エントリー経由の応募プロセスのフロー全体をテストする場合は、外部のテストツールを使用します。このフローには、スクリーニング用の質問プロセス全体を含めることができます。
Back to top応募データの受信について
Indeed エントリー経由の応募は、メール
かpostUrl
のいずれかで受け取ることができます。
PostUrl
応募をプログラムで処理する場合は、Indeed エントリーがPOSTリクエストを送信する宛先URLを指定してください。indeed-apply-postUrl
のデータ属性は、Indeed が応募データをPOSTする宛先のURLを含む文字列にする必要があります。URLはHTTPSである必要があります。
PostUrlの例
<indeed-apply-data><![CDATA[indeed-apply-apiToken=1234ABCDE&indeed-apply
-jobTitle=Professional+Basket+Weaver&indeed-apply-jobId=Sample+ID&indeed
-apply-jobCompanyName=My+Favorite+Company&indeed-apply-jobLocation=Austi
n+TX&indeed-apply-jobUrl=http%3A%2F%2Fwww.indeed.com&indeed-apply-postUr
l=https%3A%2F%2Fhookb.in%2FPxOjJqJELNH8lZLZDkpz&indeed-apply-questions=h
ttps%3A%2F%2Fpastebin.com%2Fraw%2F0vXq9q9b%23]]></indeed-apply-data>
応募データはHTTP POSTリクエストの生の本文として送信されるので、リクエストが一般的なフォームと同じように処理されることはありません。リクエストボディには、読み込んでパースする必要があるJSONドキュメントが含まれます。JSONフィールドが未入力の場合、未入力フィールドを空白として扱い、認識されないフィールドを無視する堅牢なJSONパーサを使用する必要があります。
注意:JSONデータのペイロードの最大サイズはありません。
POSTの本文はUTF-8でエンコードされ、Indeed が応募を送信していることを証明する、信頼性のあるヘッダを含みます。
Applicantフィールドのファイル部分にはcontentType、data、fileNameという3つのフィールドが含まれます。
- ContentTypeは、fileNameに基づいて判定されます。
- dataフィールドには、Base64でエンコードされた生の履歴書ファイルが含まれます。
- サードパーティは、txt、pdf、doc、docx、rtfの各ファイル形式に対応している必要があります。
注意:POSTを別のURLにリダイレクトしないでください(301および302リダイレクト等)。Indeed エントリーでは、リダイレクトが処理されません。
想定される応答
Indeed では、POSTへの応答としてHTTP 2xxレスポンスコードが返ってくることを想定しています。接続タイムアウト、POSTタイムアウト、または無効なHTTPレスポンスが原因でHTTP2xxレスポンスが返ってこない場合、Indeed から応募が再送信されます。Indeed から応募を自動再送する際には、リトライする間隔を増やすメソッドを採用します。最後の自動再送後に適切なレスポンスが返ってこない場合、Indeed は応募の送信を停止します。重複した応募の処理と期限切れの募集についての詳細なガイダンスについては、連携の状態の監視を参照してください。
Indeed は、POST期間中に求人応募の内容を検証することをパートナーに求めていません。求人内容の検証と応募資格の無効化は、POSTのダウンストリームで行う必要があります。パートナーが求職者のデータを検証する際にエラーが発生すると、連携が無効になる可能性があります。
JSON応募データ
JSON履歴書のアップロードの例
{
"id": "2b806761c722b0bf431e67168a74bfaf4d67e6070d6ac0160cace3277f6b99df",
"job": {
"jobId": "123456",
"jobKey": "8q2w4e4r5t6y7u8i",
"jobTitle": "Test Engineer",
"jobCompany": "Your Company",
"jobLocation": "Austin TX",
"jobUrl": "http://www.yourcompany.com/careers/yourjob123",
"jobMeta": "job-meta"
},
"applicant": {
"fullName": "Indeed Tester",
"coverletter": "Cover Letter of Indeed Tester for Your Company",
"email": "Indeed.Tester@indeed.com",
"phoneNumber": "+123321-1111111",
"resume": {
"file": {
"id": "13ffsffc30b0737c5b2927c0sfqq24rr8a214ef4ca6cacded5dcaa3032e8fcd3",
"fileName": "Indeed_Tester-Upload-Resume.pdf",
"contentType": "application/pdf",
"data": "VBeead131ERi0x"
}
},
"verified": true
},
"questions": {
"url": "https://apply.qa.indeed.net/indeedapply/static/questions/basic.json",
"retrievedOnMillis": 0,
"questions": [
{
"id": "automation_exp",
"question": "How many years of Automation experience do you have?",
"type": "text",
"required": true,
"format": "integer",
"min": "0",
"max": "99",
"limit": "300",
"options": [
],
"hierarchicalOptions": [
]
},
{
"id": "japanese",
"question": "Do you speak Japanese?",
"type": "select",
"required": true,
"options": [
{
"label": "Yes",
"value": "0"
},
{
"label": "No",
"value": "1"
}
],
"hierarchicalOptions": [
]
},
{
"id": "experience",
"question": "Describe your most favourite ice cream flavor",
"type": "textarea",
"required": false,
"options": [
],
"hierarchicalOptions": [
]
},
{
"id": "extra",
"question": "Website Url",
"type": "text",
"required": false,
"options": [
],
"hierarchicalOptions": [
]
},
{
"id": "multi",
"question": "Which countries would you relocate to? (you can select multiple)",
"type": "multiselect",
"required": false,
"options": [
{
"label": "United States",
"value": "0"
},
{
"label": "Canada",
"value": "1"
},
{
"label": "Mexico",
"value": "2"
},
{
"label": "Belize",
"value": "3"
},
{
"label": "Other",
"value": "4"
}
],
"hierarchicalOptions": [
]
}
],
"answers": [
{
"id": "automation_exp",
"value": "12"
},
{
"id": "japanese",
"value": "0"
},
{
"id": "experience",
"value": "Ice Cream"
},
{
"id": "extra",
"value": "www.testurl.com"
},
{
"id": "multi",
"values": [
"1",
"2",
"3"
]
}
]
},
"questionsAndAnswers": {
"url": "https://apply.qa.indeed.net/indeedapply/static/questions/basic.json",
"retrievedOnMillis": 0,
"questionsAndAnswers": [
{
"question": {
"id": "automation_exp",
"question": "How many years of Automation experience do you have?",
"type": "text",
"required": true,
"format": "integer",
"min": "0",
"max": "99",
"limit": "300",
"options": [
],
"hierarchicalOptions": [
]
},
"answer": "12"
},
{
"question": {
"id": "japanese",
"question": "Do you speak Japanese?",
"type": "select",
"required": true,
"options": [
{
"label": "Yes",
"value": "0"
},
{
"label": "No",
"value": "1"
}
],
"hierarchicalOptions": [
]
},
"answer": {
"label": "Yes",
"value": "0"
}
},
{
"question": {
"id": "experience",
"question": "Describe your most favourite ice cream flavor",
"type": "textarea",
"required": false,
"options": [
],
"hierarchicalOptions": [
]
},
"answer": "Ice Cream"
},
{
"question": {
"id": "extra",
"question": "Website Url",
"type": "text",
"required": false,
"options": [
],
"hierarchicalOptions": [
]
},
"answer": "www.testurl.com"
},
{
"question": {
"id": "multi",
"question": "Which countries would you relocate to? (you can select multiple)",
"type": "multiselect",
"required": false,
"options": [
{
"label": "United States",
"value": "0"
},
{
"label": "Canada",
"value": "1"
},
{
"label": "Mexico",
"value": "2"
},
{
"label": "Belize",
"value": "3"
},
{
"label": "Other",
"value": "4"
}
],
"hierarchicalOptions": [
]
},
"answer": [
{
"label": "Canada",
"value": "1"
},
{
"label": "Mexico",
"value": "2"
},
{
"label": "Belize",
"value": "3"
}
]
}
]
},
"analytics": {
"ip": "0.0.0.0",
"advNum": "1212121212121",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",
"device": "desktop",
"sponsored": false
},
"appliedOnMillis": 1629153774243,
"locale": "nl"
}
JSON履歴書のアップロードの例 (Resume Fieldsがある場合)
{
"applicant":{
"email":"john.doe@indeed.com",
"fullName":"John Doe",
"phoneNumber":"555-555-4321",
"fullnamePronunciation":"じょん どー",
"gender":"FEMALE",
"dateOfBirth":"2000-01-20",
"verified":true,
"resume":{
"file":{
"contentType":"text/plain",
"data":"SGVsbG8h",
"fileName":"resume.txt"
},
"json":{
"firstName":"John",
"lastName":"Doe",
"phoneNumber":"555-555-4321",
"location":{
"country": "JP",
"city": "東京都 新宿区",
"addressLine": "西新宿 7-18-10",
"addressLine2": "エクシール新宿 #201",
"postalcode": "111-1111",
},
"skills":"Microsoft Office, Java (10 年以上)",
"positions":{
"_total":1,
"values":[
{
"title":"Product Manager",
"company":"Indeed",
"location":"Austin, TX",
"startDateMonth":"09",
"startDateYear":"2007",
"endDateMonth":"-1",
"endDateYear":"-1",
"endCurrent":true,
"description":"I am the current product manager for Indeed Apply."
}
]
},
"educations":{
"_total":1,
"values":[
{
"degree":"B.A.",
"field":"Computer Science",
"school":"University of Texas, Austin",
"location":"Austin, TX",
"startDate":"2002",
"endDate":"2006",
"endCurrent":false
}
]
},
"links":{
"_total":1,
"values":[
{
"url":"http://www.indeed.com"
}
]
},
"awards":{
"_total":1,
"values":[
{
"title":"Best PM at Indeed",
"dateMonth":"04",
"dateYear":"2008",
"description":"Best PM is voted on by Indeed employees and given to the PM with the most votes."
}
]
},
"certifications":{
"_total":1,
"values":[
{
"title":"cert-title",
"startDateMonth":"02",
"startDateYear":"2007",
"endDateMonth":"02",
"endDateYear":"2008",
"endCurrent":false,
"description":"cert-description"
}
]
},
"languages": {
"_total": 2,
"values": [{
"language": "English",
"proficiency": "fluent"
},{
"language": "Japanese",
"proficiency": "native"
}]
},
"associations":{
"_total":1,
"values":[{
"title":"group-title",
"startDateMonth":"01",
"startDateYear":"2009",
"endDateMonth":"-1",
"endDateYear":"-1",
"endCurrent":true,
"description":"group-description"
}]
},
"patents":{
"_total":1,
"values":[
{
"patentNumber":"patent-number",
"title":"patent-title",
"url":"patent-url",
"dateMonth":"02",
"dateYear":"2009",
"description":"patent-description"
}
]
},
"publications":{
"_total":1,
"values":[
{
"title":"pub-title",
"url":"pub-url",
"dateDay":"14",
"dateMonth":"10",
"dateYear":"2004",
"description":"pub-description"
}
]
},
"militaryServices":{
"_total":1,
"values":[
{
"serviceCountry":"mil-country",
"branch":"mil-branch",
"rank":"mil-rank",
"startDateMonth":"02",
"startDateYear":"2003",
"endDateMonth":"12",
"endDateYear":"2008",
"endCurrent":false,
"commendations":"mil-commendations",
"description":"mil-description"
}
]
}
}
}
},
"appliedOnMillis":1325276227653,
"job":{
"jobCompany":"Your Company",
"jobId":"7775e2bc62b7f77e",
"jobLocation":"New York, NY 10110",
"jobMeta":"",
"jobTitle":"Test Engineer",
"jobUrl":"http://www.yourcompany.com/careers/yourjob123.html"
},
"locale":"en_US"
}
JSON Indeed 履歴書の例
{
"id": "2b806761c722b0bf431e67168a74bfaf4d67e6070d6ac0160cace3277f6b99df",
"job": {
"jobId": "123456",
"jobKey": "8q2w4e4r5t6y7u8i",
"jobTitle": "Test Engineer",
"jobCompany": "Your Company",
"jobLocation": "Austin TX",
"jobUrl": "http://www.yourcompany.com/careers/yourjob123",
"jobMeta": "job-meta"
},
"applicant": {
"fullName": "Indeed Tester",
"firstName": "Indeed",
"lastName": "Tester",
"coverletter": "Cover Letter of Indeed Tester for Your Company",
"email": "Indeed.Tester@indeed.com",
"phoneNumber": "+123321-1111111",
"resume": {
"file": {
"fileName": "Indeed_Tester.pdf",
"contentType": "application/pdf",
"data": "JVBERi0xL=="
},
"html": "<html><head></head><body>Resume Content</body></html>",
"json": {
"firstName": "Indeed",
"lastName": "Tester",
"email": "Indeed.Tester@indeed.com",
"headline": "headline",
"summary": "summary",
"additionalInfo": "additionalinfo",
"phoneNumber": "555-555-4321",
"location": {
"country": "US",
"city": "Austin, TX",
"postalcode": "12345"
},
"personalDetails": {
},
"skills": "Skill 1, Skill 2, Skill 3",
"positions": {
"_total": 2,
"values": [
{
"startDateMonth": "01",
"startDateYear": "2015",
"endCurrent": true,
"title": "Product Manager",
"company": "Indeed",
"location": "Austin, TX",
"description": "This is a job I had. This is a description of what I did there. Resume used for testing purposes only."
},
{
"startDateMonth": "04",
"startDateYear": "2010",
"endDateMonth": "01",
"endDateYear": "2015",
"endCurrent": false,
"title": "Software Engineer",
"company": "Indeed",
"location": "Austin, TX",
"description": "This is a job I had. This is the description of what I did. Used for testing purposes only."
}
]
},
"educations": {
"_total": 1,
"values": [
{
"degree": "Bachelor of Arts",
"field": "Graphic Design",
"school": "University of Texas",
"location": "Austin, TX",
"startDate": "2014",
"endDate": "2019",
"startDateYear": "2014",
"endDateYear": "2019",
"startDateMonth": "01",
"endDateMonth": "02",
"endCurrent": false
}
]
},
"languages": {
"_total": 1,
"values": [
{
"language": "French",
"proficiency": "Fluent"
}
]
},
"links": {
"_total": 1,
"values": [
{
"url": "http://www.indeed.com"
}
]
},
"awards": {
"_total": 1,
"values": [
{
"dateMonth": "04",
"dateYear": "2020",
"title": "Award Title",
"description": "award description"
}
]
},
"certifications": {
"_total": 0,
"values": [
]
},
"associations": {
"_total": 1,
"values": [
{
"startDateMonth": "01",
"startDateYear": "2014",
"endDateMonth": "06",
"endDateYear": "2018",
"endCurrent": false,
"title": "Group Title",
"description": "group description"
}
]
},
"patents": {
"_total": 1,
"values": [
{
"dateMonth": "04",
"dateYear": "2012",
"title": "Patent Title",
"description": "patent description",
"patentNumber": "12345",
"url": "http://www.indeed.com"
}
]
},
"publications": {
"_total": 1,
"values": [
{
"dateMonth": "08",
"dateYear": "2019",
"title": "Publication Title",
"description": "publication description",
"url": "http://www.indeed.com"
}
]
},
"militaryServices": {
"_total": 1,
"values": [
{
"startDateMonth": "02",
"startDateYear": "2003",
"endDateMonth": "05",
"endDateYear": "2009",
"endCurrent": false,
"serviceCountry": "US",
"branch": "military branch",
"rank": "rank",
"commendations": "military commendations",
"description": "military service description"
}
]
}
},
"text": "resume in text format"
},
"verified": true
},
"questions": {
"url": "https://apply.qa.indeed.net/indeedapply/static/questions/basic.json",
"retrievedOnMillis": 0,
"questions": [
{
"id": "automation_exp",
"question": "How many years of Automation experience do you have?",
"type": "text",
"required": true,
"format": "integer",
"min": "0",
"max": "99",
"limit": "300",
"options": [
],
"hierarchicalOptions": [
]
},
{
"id": "japanese",
"question": "Do you speak Japanese?",
"type": "select",
"required": true,
"options": [
{
"label": "Yes",
"value": "0"
},
{
"label": "No",
"value": "1"
}
],
"hierarchicalOptions": [
]
},
{
"id": "experience",
"question": "Describe your most favourite ice cream flavor",
"type": "textarea",
"required": false,
"options": [
],
"hierarchicalOptions": [
]
},
{
"id": "extra",
"question": "Website Url",
"type": "text",
"required": false,
"options": [
],
"hierarchicalOptions": [
]
},
{
"id": "multi",
"question": "Which countries would you relocate to? (you can select multiple)",
"type": "multiselect",
"required": false,
"options": [
{
"label": "United States",
"value": "0"
},
{
"label": "Canada",
"value": "1"
},
{
"label": "Mexico",
"value": "2"
},
{
"label": "Belize",
"value": "3"
},
{
"label": "Other",
"value": "4"
}
],
"hierarchicalOptions": [
]
}
],
"answers": [
{
"id": "automation_exp",
"value": "12"
},
{
"id": "japanese",
"value": "0"
},
{
"id": "experience",
"value": "Ice Cream"
},
{
"id": "extra",
"value": "www.testurl.com"
},
{
"id": "multi",
"values": [
"1",
"2",
"3"
]
}
]
},
"questionsAndAnswers": {
"url": "https://apply.qa.indeed.net/indeedapply/static/questions/basic.json",
"retrievedOnMillis": 0,
"questionsAndAnswers": [
{
"question": {
"id": "automation_exp",
"question": "How many years of Automation experience do you have?",
"type": "text",
"required": true,
"format": "integer",
"min": "0",
"max": "99",
"limit": "300",
"options": [
],
"hierarchicalOptions": [
]
},
"answer": "12"
},
{
"question": {
"id": "japanese",
"question": "Do you speak Japanese?",
"type": "select",
"required": true,
"options": [
{
"label": "Yes",
"value": "0"
},
{
"label": "No",
"value": "1"
}
],
"hierarchicalOptions": [
]
},
"answer": {
"label": "Yes",
"value": "0"
}
},
{
"question": {
"id": "experience",
"question": "Describe your most favourite ice cream flavor",
"type": "textarea",
"required": false,
"options": [
],
"hierarchicalOptions": [
]
},
"answer": "Ice Cream"
},
{
"question": {
"id": "extra",
"question": "Website Url",
"type": "text",
"required": false,
"options": [
],
"hierarchicalOptions": [
]
},
"answer": "www.testurl.com"
},
{
"question": {
"id": "multi",
"question": "Which countries would you relocate to? (you can select multiple)",
"type": "multiselect",
"required": false,
"options": [
{
"label": "United States",
"value": "0"
},
{
"label": "Canada",
"value": "1"
},
{
"label": "Mexico",
"value": "2"
},
{
"label": "Belize",
"value": "3"
},
{
"label": "Other",
"value": "4"
}
],
"hierarchicalOptions": [
]
},
"answer": [
{
"label": "Canada",
"value": "1"
},
{
"label": "Mexico",
"value": "2"
},
{
"label": "Belize",
"value": "3"
}
]
}
]
},
"analytics": {
"ip": "0.0.0.0",
"advNum": "1212121212121",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",
"device": "desktop",
"sponsored": false
},
"appliedOnMillis": 1629153774243,
"locale": "nl"
}
Indeed エントリーのJSONフィールド
最上部階層のフィールド
フィールド名 | 内容 | 例 |
---|---|---|
id
|
Indeed が指定した応募の固有ID。 Indeed と評価データを共有する際に、このIDと応募状況を含めてください。 |
5156eb63c9a0a8ac
|
appliedOnMillis
|
standard Unix time形式で表示された、ユーザーが応募した日付と時間。 | 1324051581711 |
job
|
ボタンのHTMLデータ属性によって提供されるデータを表す求人のオブジェクト。 | Jobオブジェクトをご覧ください。 |
applicant
|
応募者を表すApplicantオブジェクト。 | Applicantオブジェクトのフィールドをご覧ください。 |
analytics
|
以下の情報を含むオブジェクトです。
注意:sponsoredは、ユーザーがサードパーティのWebサイトから応募する場合や、求職者が Indeed のターゲット広告(ITA)製品から応募するよう指示されている場合など、Indeed サイト上でクリックが発生しない場合にempty/absentを返します。サードパーティのサイトでは、求人が有料掲載されているかどうかを判定できません。 サードパーティのサイトで発生した有料掲載求人のクリックをトラッキングするには、URLのトラッキングを有効にしてください。JSONの応答には「sponsored」のパラメータが含まれていないので、XML-onlyの応答を有効にする必要があります。サードパーティのサイト上で有料掲載求人をトラッキングするには、クライアントの採用企業アカウント内の求人ごとに設定し、joburlに埋め込む必要があります。これにより、ATSでの追跡が可能になります。 |
|
locale
|
求人への応募の際に使用されたロケールです。 | ja_JP |
Jobオブジェクトのフィールド
注意:これらのフィールドはボタンの設定に基づきます。
フィールド名 | 説明 | 例 |
---|---|---|
jobUrl
|
仕事内容がすべて記載されたページの正規URL。 注意:Indeed での応募では、応募が行われた Indeed の特定のURLに、応募JSONで受信したjobUrlが設定されます。 |
http://www.yourcompany.com/
careers/yourjob123.html
|
jobId
|
求人のID。求人を内部で追跡するために使用されます |
7775e2bc62b7f77e
|
jobTitle
|
表示する求人の職種名。 |
テストエンジニア
|
jobCompany
|
採用企業名。
注意:データ属性(data-attributes)ではjobCompanyNameです。 |
貴社のお名前
|
jobLocation
|
勤務地。 |
東京都港区
|
jobMeta |
オリジナルボタン設定で入力される任意の情報。 |
right-rail-apply-button
|
Applicantフィールド
フィールド名 | 入力の有無 | 内容 | 例 |
---|---|---|---|
fullName |
必須 | 応募者の名前。ユーザーが Indeed 履歴書を使用している場合はfirstName +lastName となります。 |
田中一郎 |
firstName |
任意 | 応募者の名。「name」フィールドで「firstlastname」が指定されます |
一郎
|
lastName |
任意 | 応募者の姓。「name」フィールドで「firstlastname」が指定されます |
田中
|
email |
必須 | 応募者のメールアドレス。 |
ichiro.tanaka@indeed.com
|
phoneNumber |
任意 | 応募者が入力している場合、電話番号を表示。 |
+81 90 0000 0000
|
fullNamePronunciation |
任意 | 氏名のふりがな。日本でresumefieldsrequired またはresumefieldsoptional が入力されている場合は常に入力されます。ひらがな・カタカナでの入力が可能。 |
せな かな
|
firstNamePronunciation |
任意 | 応募者の名前のふりがな。「name」フィールドで「firstlastname」が指定されている場合に入力されます。
日本でresumefieldsrequired またはresumefieldsoptional が入力されている場合は常に入力されます。ひらがな・カタカナでの入力が可能。 |
かな
|
lastNamePronunciation |
任意 | 応募者の姓のふりがな。「name」フィールドで「firstlastname」が指定されている場合に入力されます。
日本でresumefieldsrequired またはresumefieldsoptional が入力されている場合は常に入力されます。ひらがな・カタカナでの入力が可能。 |
せな
|
dateOfBirth |
任意 | 応募者が入力している場合、生年月日を表示。日、月、年が入力され、順序は市場ごとにローカライズされます。 利用できる国:アラブ首長国連邦、アルゼンチン、バーレーン、ブラジル、クック諸島、中国、コロンビア、コスタリカ、エクアドル、エジプト、スペイン、フランス、香港、インドネシア、インド、イタリア、日本、韓国、クウェート、モロッコ、メキシコ、マレーシア、ナイジェリア、オマーン、パナマ、ペルー、ポルトガル、カタール、ロシア、サウジアラビア、シンガポール、トルコ、台湾、ウクライナ、ウルグアイ、ベネズエラ、ベトナム、南アフリカ |
2010-03-04
|
gender |
任意 | 応募者が入力している場合、性別を表示。利用できる国:日本。取りうる値はNONE, MALE, FEMALE。ただしoptional設定で応募者が入力しなかった場合は空欄となります。 |
FEMALE
|
coverletter |
任意 | 応募者の送付状。ユーザーが送付状を提供していない場合、このフィールドはJSONオブジェクトに表示されません。 | 送付状 |
resume |
任意 | ユーザーの履歴書を表すオブジェクト。 | Resumeフィールドの項目をご覧ください。 |
verified |
必須 | 求職者のメールアドレスが認証済みかどうかを示すフラグ。以下の場合は
これ以外の場合、フラグは |
true |
Resumeフィールド
フィールド名 | 履歴書のアップロードの有無 | Indeed 履歴書の有無 | 内容 |
---|---|---|---|
file |
必須 | 有 | バイナリの履歴書ファイルを含むオブジェクト。 |
text |
任意 | 有 | テキスト形式の履歴書。ユーザーが Indeed 履歴書を使用している場合にのみ提供されます。 |
html |
任意 | 有 | 履歴書の形式。ユーザーが Indeed 履歴書を使用している場合にのみ提供されます。 |
json |
任意 | 有 | JSON形式の履歴書データ。以下の Indeed 履歴書をご覧ください。 |
Resumeファイルフィールド
名前 | 説明 | 例 |
---|---|---|
data |
Base 64を使用してエンコードされた、ファイルの生のバイナリバイト。 |
SGVsbG8h=
|
fileName |
アップロードされた履歴書のファイル名。Indeed 履歴書を使用している場合、ファイル名は自動生成されます。 | resume.txt |
contentType |
履歴書ファイルの拡張子で識別されるコンテンツの種類。 |
application/octet-stream
|
Indeed 履歴書フィールド
配列のような(Array-like)オブジェクトには、_total
フィールドとvalues
フィールドが含まれます。_total
フィールドは、配列の長さを示す整数です。values
フィールドは、_total
オブジェクトを含むJSON配列です。
フィールド名 | 種類 | 内容 |
---|---|---|
firstName |
文字列 | 応募者の名前。 |
lastName |
文字列 | 応募者の姓。 |
headline |
文字列 | 応募者の履歴書の見出し。 |
summary |
文字列 | 応募者の履歴書の概要。 |
publicProfileUrl |
url | ユーザーの Indeed 履歴書を閲覧するためのURL(公開されている場合)。 |
additionalInfo |
文字列 | その他の追加情報。 |
phoneNumber |
文字列 | ユーザーの電話番号(ユーザーの Indeed 履歴書に記載がある場合)。 |
location |
オブジェクト | ユーザーの位置情報を表すJSONオブジェクト(入力されている場合)。 |
location.city |
文字列 | 応募者の居住する都道府県・市区町村。 |
location.country |
文字列 | 応募者の居住国。 |
location.postalcode |
文字列 | 応募者の居住地の郵便番号。 |
location.addressLine |
文字列 | 応募者の住所の地名・番地。 |
location.addressLine2 |
文字列 | 応募者の住所の建物名・部屋番号。 |
Personal details |
オブジェクト | 応募者から提出された個人情報詳細。 注意:これらは各フィールドに記載されている一部の市場でのみ該当します。 |
skills |
文字列 | 応募者のスキル。 |
positions |
array-like | 職務内容オブジェクトのarray-likeオブジェクト。 |
educations |
array-like | 学歴オブジェクトのarray-likeオブジェクト。 |
languages |
array-like | 言語オブジェクトのarray-likeオブジェクト。 |
links |
array-like | リンクオブジェクトのarray-likeオブジェクト。 |
awards |
array-like | 功績オブジェクトのarray-likeオブジェクト。 |
certifications |
array-like | 資格オブジェクトのarray-likeオブジェクト。 |
associations |
array-like | 関連団体オブジェクトのarray-likeオブジェクト。 |
patents |
array-like | 特許オブジェクトのarray-likeオブジェクト。 |
publications |
array-like | 出版物オブジェクトのarray-likeオブジェクト。 |
militaryServices |
array-like | 兵役オブジェクトのarray-likeオブジェクト。 |
languages |
array-like | 言語オブジェクトの矢印のようなオブジェクト。 |
個人情報詳細フィールド
フィールド名 | 種類 | 該当市場 | 説明 | 例 |
---|---|---|---|---|
highestLevelOfEducation |
単一値 | アラブ首長国連邦、オーストラリア、ベルギー、ブラジル、カナダ、チリ、コロンビア、コスタリカ、チェコ、デンマーク、エクアドル、スペイン、英国、香港、ハンガリー、アイルランド、イタリア、ルクセンブルク、メキシコ、ナイジェリア、オランダ、ノルウェー、パナマ、ペルー、ポーランド、ポルトガル、ルーマニア、ロシア、スウェーデン、トルコ、台湾、ウクライナ、ウルグアイ、ベネズエラ、ベトナム、南アフリカ | 応募者が最終学歴を選択できる、該当市場向けの学歴のドロップダウン。 | GCSEまたは同等の 高等教育ディプロマ |
employmentEligibility |
単一値 | アラブ首長国連邦、オーストラリア、バーレーン、エジプト、英国、香港、イタリア、クウェート、モロッコ、ニュージーランド、オマーン、カタール、ロシア、サウジアラビア、シンガポール | 求職者がその国で就労する資格を持つかどうかを尋ねる質問。 | はい |
highestCareerLevel |
単一値 | フランス、香港、インド、韓国、ベトナム、南アフリカ | 求職者は業務経験を4つのレベルから選択可能。 | 新卒 |
industry |
複数値 | アラブ首長国連邦、アルゼンチン、バーレーン、ブラジル、チリ、中国、コロンビア、コスタリカ、エクアドル、エジプト、スペイン、フランス、英国、アイルランド、インド、韓国、クウェート、ルクセンブルク、モロッコ、メキシコ、ナイジェリア、オマーン、パナマ、ペルー、カタール、ロシア、サウジアラビア、トルコ、台湾、ウクライナ、ウルグアイ、ベネズエラ、南アフリカ | 応募者が働いている、または専門とする業界を選択できるドロップダウン。 | 芸術および娯楽 |
driversLicense |
複数値 | アルゼンチン、ベルギー、チリ、コロンビア、コスタリカ、チェコ、エクアドル、スペイン、英国、イタリア、日本、メキシコ、オランダ、パナマ、ペルー、ロシア、トルコ、ウルグアイ、ベネズエラ、南アフリカ | 各市場向けにローカライズされた運転免許のオプションのドロップダウン。 | 普通免許 |
dateOfBirth |
日付 | アラブ首長国連邦、アルゼンチン、バーレーン、ブラジル、クック諸島、中国、コロンビア、コスタリカ、エクアドル、エジプト、スペイン、フランス、香港、インドネシア、インド、イタリア、日本、韓国、クウェート、モロッコ、メキシコ、マレーシア、ナイジェリア、オマーン、パナマ、ペルー、ポルトガル、カタール、ロシア、サウジアラビア、シンガポール、トルコ、台湾、ウクライナ、ウルグアイ、ベネズエラ、ベトナム、南アフリカ | 日、月、年の3つのドロップダウン。順序は市場ごとにローカライズされています。 | 年月日(dd/MM/yyyy) |
educationDescription |
自由記述 | スイス、ドイツ、ノルウェー、スウェーデン、ウクライナ、ウルグアイ、ベトナム | 求職者が学歴を記載可能。 | 自由記述 |
gender |
単一値 | 日本 | 求職者の性別。 | 女性 |
disability |
単一値 | ブラジル、イタリア、メキシコ、南アフリカ | さまざまな障がいに関するオプションのドロップダウン(BR)。その他の市場については、「はい」または「いいえ」。 | 認知障がい または 「はい」 |
ethnicity |
単一値 | 南アフリカ | 民族に関するオプションのドロップダウン。 | アフリカ人 |
veteranStatus |
単一値 | 韓国 | 求職者の兵役の経験。 | 該当する |
NYSCStatus |
単一値 | ナイジェリア | 求職者のNYSCステータスに関するドロップダウン。 | 継続中 |
employmentSupportStatus |
単一値 | 韓国 | 求職者の就労支援の状況。 | 該当する |
willingToTravel |
単一値 | アルゼンチン、チリ、コロンビア、コスタリカ、エクアドル、スペイン、メキシコ、パナマ、ペルー、ウルグアイ、ベネズエラ | 求職者の出張への意欲に関するドロップダウン。 | はい |
europeanUnionWorkPermit |
単一値 | アイルランド | 求職者が欧州での就労許可を持っているかどうかを尋ねる質問。 | はい |
citizenship |
単一値 | フィリピン、シンガポール、南アフリカ | 求職者の市民権に関するドロップダウン。 | 南アフリカ共和国の市民 |
IDP |
チェックボックス | ウクライナ | 求職者が国内避難民であるかどうかを尋ねる質問。 | IDP(国内避難民) |
employmentEligibilityMultiCountries |
複数値 | スペイン、インド | 求職者が就労資格を有する国について尋ねる質問のドロップダウン。 | アフガニスタン |
idNumber |
数値 | ブラジル、イタリア、トルコ、南アフリカ | 求職者にID番号の入力を促す質問。 | 数値 |
totalYearsOfExperience |
数値 | ID、IN | 求職者に経験年数を尋ねる質問。 | 3 |
hobbiesAndInterests |
自由記述 | チェコ、ハンガリー、韓国、ルクセンブルク、ポーランド、ロシア | 求職者に趣味や興味を尋ねる質問。 | 自由記述 |
spouse |
文字列 | 日本 | 2022年4月以降で順次対応(詳細はお問い合わせください) 求職者の配偶者の有無を表示。 以下のいずれかの値が入力されます。 はい、いいえ、無回答(無回答は、求職者が質問に回答しなかったことを示します) |
はい |
spouseAsDependent |
文字列 | 日本 | 2022年4月以降で順次対応(詳細はお問い合わせください) 求職者の配偶者が扶養家族であるかどうか。 以下のいずれかの値が入力されます。 はい、いいえ、無回答(無回答は、求職者が質問に回答しなかったことを示します) |
はい |
Indeed 履歴書の職歴情報(position)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
title |
文字列 | 職種名。 | プロダクトマネージャー |
company |
文字列 | 会社名。 | Indeed |
location |
文字列 | 勤務地。 | テキサス州オースティン |
description |
文字列 | 職務内容。 | -------- |
startDateMonth |
文字列 | 就業を開始した⽉を表す1から12の間の整数を含む文字列。 | "09" |
startDateYear |
文字列 | 就業を開始した年度の整数を含む文字列。 | "2007" |
endDateMonth |
文字列 | 退職した⽉を表す1から12の間の整数を含む文字列。 | "09" |
endDateYear |
文字列 | 退職した年度の整数を含む文字列。 | "2007" |
endCurrent |
boolean | この仕事がユーザーの現職かどうかを示すフラグ | true |
Indeed 履歴書の学歴情報(education)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
degree |
文字列 | この教育機関で取得した学位。 | 学士 |
field |
文字列 | この教育機関で専攻した分野。 | コンピュータサイエンス |
school |
文字列 | 教育機関の名称。 | テキサス大学 |
location |
文字列 | 教育機関の所在地。 | テキサス州オースティン |
startDateMonth |
文字列 | 就業を開始した⽉を表す1から12の間の整数を含む文字列。 | "09" |
startDateYear |
文字列 | 入学した年度の整数を含む文字列。 | "2007" |
endDateMonth |
文字列 | 退職した⽉を表す1から12の間の整数を含む文字列。 | "09" |
endDateYear |
文字列 | 卒業した年度の整数を含む文字列。 | "2007" |
endCurrent |
boolean | この教育機関に在学中であることを示すフラグ。 | true |
Indeed 履歴書の言語(language)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
language |
文字列 | 話し言葉、書き言葉、手話。 | フランス語 |
proficiency |
文字列 | 話し言葉、書き言葉、手話の習得レベル。 | 流暢に話せる(上級者) |
Indeed 履歴書のリンク(link)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
url |
文字列 | リンクのURL。 | https://www.indeed.com |
Indeed 履歴書の功績(award)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
title |
文字列 | 功績の名称。 | Indeed 最優秀PM |
description |
文字列 | 功績の内容。 | 社内で最も優秀なPMとして表彰。 |
dateMonth |
文字列 | 受賞した⽉を表す1から12の間の整数を含む文字列。 | "09" |
dateYear |
文字列 | 受賞した年度の整数を含む文字列。 | "2007" |
Indeed 履歴書の資格情報(certification)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
title |
文字列 | 資格の名称。 | PMP |
description |
文字列 | 資格の内容。 | プロジェクトマネジメントプロフェッショナルの資格 |
startDateMonth |
文字列 | 取得した⽉を表す1から12の間の整数を含む文字列。 | "09" |
startDateYear |
文字列 | 取得した年度の整数を含む文字列。 | "2007" |
endDateMonth |
文字列 | 資格が失効した⽉を表す1から12の間の整数を含む文字列。 | "09" |
endDateYear |
文字列 | 資格が失効した年度の整数を含む文字列。 | "2007" |
endCurrent |
boolean | この資格が現在も有効であることを示すフラグ。 | true |
Indeed 履歴書の関連団体(association groups)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
title |
文字列 | 団体の名称。 | ソサエティ・フォー・テクニカル・コミュニケーション |
description |
文字列 | この団体についての説明。 | テクニカルコミュニケーションに携わるプロフェッショナルの団体。 |
startDateMonth |
文字列 | 入会した⽉を表す1から12の間の整数。 | "09" |
startDateYear |
文字列 | 入会した年度の整数を含む文字列。 | "2007" |
endDateMonth |
文字列 | 退会した⽉を表す1から12の間の整数を含む文字列。 | "09" |
endDateYear |
文字列 | 退会した年度の整数を含む文字列。 | 2007 |
endCurrent |
boolean | 現在もこの団体に所属していることを示すフラグ。 | true |
Indeed 履歴書の特許(patent)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
title |
文字列 | 特許の名称。 | -------- |
description |
文字列 | この特許についての説明。 | -------- |
patentNumber |
文字列 | 特許番号。 | -------- |
url |
文字列 | この特許のURL。 | -------- |
dateMonth |
文字列 | 特許を取得した⽉を表す1から12の間の整数を含む文字列。 | "09" |
dateYear |
文字列 | 特許を取得した年度の整数を含む文字列。 | "2007" |
Indeed 履歴書の出版物(publication)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
title |
文字列 | 出版物の名称。 | -------- |
description |
文字列 | この出版物についての説明。 | -------- |
url |
文字列 | この出版物のURL。 | -------- |
dateDay |
文字列 | ⽇付を表す整数を含む文字列。 | "03" |
dateMonth |
文字列 | ⽉を表す1から12の間の整数を含む文字列。 | "09" |
dateYear |
文字列 | 出版年の整数を含む文字列。 | "2007" |
Indeed 履歴書の兵役(military service)フィールド
フィールド名 | 種類 | 説明 | 例 |
---|---|---|---|
serviceBranch |
文字列 | 所属する五軍の軍種。 | -------- |
branch |
文字列 | 五軍内所属時の組織。 | -------- |
rank |
文字列 | 所属時の階級。 | -------- |
description |
文字列 | 所属時についての説明。 | -------- |
commendations |
文字列 | 所属時に受けた表彰。 | -------- |
startDateMonth |
文字列 | 入隊した⽉を表す1から12の整数を含む文字列。 | "09" |
startDateYear |
文字列 | 入隊した年度の整数を含む文字列。 | "2007" |
endDateMonth |
文字列 | 除隊した⽉を表す1から12の間の整数を含む文字列。 | "09" |
endDateYear |
文字列 | 除隊した年度の整数を含む文字列。 | "2007" |
endCurrent |
boolean | 現在も軍隊に所属していることを示すフラグ。 | true |
POSTの信頼性
postUrlに対して送信されるPOSTリクエストには、そのPOSTの信頼性を証明するために使用されるHTTPヘッダが含まれています。Indeed エントリーでは、共有APIシークレットを使用して、HMAC-SHA1アルゴリズムを利用したメッセージの署名が算出されます。この署名はX-Indeed-Signature HTTPヘッダとして送信されます。以下のコード例は、メッセージの署名がどのように生成されるかを示します。
C#(version 6.0)を利用した場合
using System;
using System.Security.Cryptography;
using System.Text;
class MainClass
{
public static void Main(string[] args)
{
String message = getMessage();
// This is a sample api Secret for demonstration do not alter
String apiSecret = "Y0ur api secret key not shared &$%@";
String signature = computeSignature(message, apiSecret);
// Compare the message paylod signature hashed value to the pre-determined signature from the send...
if (signature.Equals("SGadPKocf3HD1LYXm3xGObB6hzk="))
{
Console.WriteLine("Successful signature validation using B64 HMAC SHA1: " + signature);
}
else
Console.WriteLine("Invalid Signature: " + signature);
}
static string computeSignature(string input, String key)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
HMACSHA1 myhmacsha1 = new HMACSHA1(keyBytes);
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hash = myhmacsha1.ComputeHash(inputBytes);
return System.Convert.ToBase64String(hash);
}
static string getMessage()
{
string msg = "{'locale':'en_US','applicant':{'fullName':'John Doe','email':'john.doe@example.com'}}";
return msg;
}
}
Java(openjdk version 17.0.4.1)を利用した場合
import javax.crypto.Mac;
import javax.crypto.spec.*;
import javax.crypto.SecretKey;
import java.util.Base64;
public class App {
public static void main(String[] args) {
String message = getMessage();
String apiSecret = "Y0ur api secret key not shared &$%@";
String signature = computeSignature(message, apiSecret);
if(!signature.equals("SGadPKocf3HD1LYXm3xGObB6hzk="))
System.out.println("Invalid Signature: "+signature);
else
System.out.println("Successful signature validation using B64 HMAC SHA1: " + signature);
}
static String computeSignature(String message, String apiSecret) {
try{
byte[] keyBytes = apiSecret.getBytes();
SecretKey signingKey = new SecretKeySpec(keyBytes, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
return new String(Base64.getEncoder().encode(mac.doFinal(message.getBytes("UTF-8"))));
} catch(Exception e) {
System.out.println(e.getMessage());
throw new RuntimeException(e);
}
}
public static String getMessage() {
return "{'locale':'en_US','applicant':{'fullName':'John Doe','email':'john.doe@example.com'}}";
}
}
Perl(version 5.0)を利用した場合
use Digest::SHA qw(hmac_sha1_base64);
use Encode qw(encode);
# your secret key
$key = "Y0ur api secret key not shared &\$\%\@";
# test message
$message = get_message();
# compute signature
$signature = hmac_sha1_b64_string($key, $message);
if ($signature eq "SGadPKocf3HD1LYXm3xGObB6hzk=") {
print "Successful signature validation using B64 HMAC SHA1: " . $signature, "n";
} else{
print "Invalid Signature: ", $signature, "n";
}
sub hmac_sha1_b64_string {
$keybtes = encode("UTF8", $key);
$databytes = encode("UTF8", $message);
$b64digest = hmac_sha1_base64($databytes, $keybtes);
# Perl does not pad b64 output, so we have to do it manually
while(length($b64digest) % 4) {
$b64digest.= '=';
}
return $b64digest;
}
sub get_message {
return "{'locale':'en_US','applicant':{'fullName':'John Doe','email':'john.doe\@example.com'}}";
}
PHP(version 7.0)を利用した場合
function sign($str, $key) {
$opts= OPENSSL_RAW_DATA;
$digest= hash_hmac("sha1", $str, $key, $raw_output = TRUE);
$signature= base64_encode($digest);
return$signature;
}
$api_secret= "Y0ur api secret key not shared &$%@";
$message= "{'locale':'en_US','applicant':{'fullName':'John Doe','email':'john.doe@example.com'}}";
$signature= sign($message,$api_secret);
if( $signature!= "SGadPKocf3HD1LYXm3xGObB6hzk=")
print("Invalid Signature ". $signature);
else
print("Successful signature validation using B64 HMAC SHA1: " . $signature);
Python(version 3.10)を利用した場合
from hashlib import sha1
import hmac
import base64
# your secret key
secret = "Y0ur api secret key not shared &$%@".encode("utf-8")
# test message
message = "{'locale':'en_US','applicant':{'fullName':'John Doe','email':'john.doe@example.com'}}".encode('UTF-8')
print(message)
# compute the hash
message_hashed = hmac.new(secret, message, sha1)
digest = message_hashed.digest()
# b64 encode the hash...this is the message authentication value
signature = base64.b64encode(digest)
if signature != b'SGadPKocf3HD1LYXm3xGObB6hzk=':
print("Invalid Signature: " + str(signature))
else:
print('Successful Signature Validation using B64 HMAC SHA1: ' + str(signature))
Node JS(LTS 16)を利用した場合
// Dependencies
const fs = require('fs');
const crypto = require('crypto');
const secret = "Your secret key - this the secret key associated with your Indeed Apply"
const xIndeedSignature = "This is the value of the X-Indeed-Signature return as part of the request headers";
/* Read data.json, this is the raw payload indeed send you in the body of the response.
create a data.json in the same directory with your index.js file
*/
const data = fs.readFileSync('data.json', { encoding: 'utf8', flag: 'r+' });
// Encode data in base64
const encodedStr = new Buffer.from(data).toString('base64');
//compute the hash
const signature = crypto.createHmac('SHA1', secret).update(encodedStr, 'base64').digest('base64');
// check the computed signature against the X-Indeed-Signature provided in the request_headers of your application
if (signature !== xIndeedSignature) {
console.log(`invalid signature: ${signature}`, `\nX-Indeed-Signature: ${xIndeedSignature}`);
} else {
console.log(`Computed signature matches: ${signature}`);
}
メール
応募をメールで受け取ることを選択した場合は、ボタンの設定で、メールの設定属性を指定する必要があります。ユーザーが応募を完了すると、ユーザーのフルネームとメールアドレスが記載され、送付状と履歴書が添付されたメールが Indeed から送信されます。ユーザーが Indeed 履歴書を使用して応募している場合は、このバージョンの履歴書がメールに直接記載され、履歴書のPDFバージョンが添付されます。このメールアドレスは暗号化されることが必要になります。
暗号化されたメールの例
<span class="indeed-apply-widget"
data-indeed-apply-apiToken="8f57d522dc544a737f70ad5828d5ace1"
data-indeed-apply-jobLocation="New York, NY 10110"
data-indeed-apply-jobCompanyName="Your Company"
data-indeed-apply-jobTitle="Test Engineer"
data-indeed-apply-email="b18d0be4c173dfa2b7cb7856e7c7b6f02a563867a9df67ca208c8b9654966299">
</span>
暗号化と復号処理
メールを介して Indeed エントリーを利用する場合、Indeed が応募を送信する宛先のメールを暗号化する必要があります。128ビットの秘密鍵を利用した AES アルゴリズムを用いたメール暗号化を Indeed は推奨しています。暗号利用モードは PKCS5 パディングを利用した Cipher Block Chaining (CBC) です。初期化ベクトルは、00の16バイトです。
注意:XMLフィード内の各求人に対し、data-indeed-apply-email
属性に含めるメールアドレスは1つのみにしてください。複数のアドレスを含めるとエラーが発生し、Indeed エントリーがこの求人から削除されます。
メール暗号化の手順
- 秘密鍵を使って、最初の16バイトを利用する128ビットの秘密鍵を生成します。
- UTF-8でエンコードされたプレーンテキストのメールのバイト数を読み取ります。
- AESアルゴリズムと128ビットキーを使用してメールを暗号化します。CBCモードおよびPKCS5パディングを必ずご利用ください。
- 暗号化されたバイトを16進数列に変換します。
- この16進数列を
data-indeed-apply-email
属性として使用します。
次に、暗号化されたメールをプレーンテキストのメールの代わりに使用します。Indeed エントリーでは、暗号化されたメールが使用されていると認識されます。
暗号化されたメールの例
<span class="indeed-apply-widget"
data-indeed-apply-apiToken="8e94c9959e5021fc7f70ad5828d5ace1"
data-indeed-apply-jobLocation="Austin TX"
data-indeed-apply-jobCompanyName="Your Company"
data-indeed-apply-jobTitle="Engineer"
data-indeed-apply-email="b18d0be4c173dfa2b7cb7856e7c7b6f02a563867a9df67ca208c8b9654966299">
</span>
暗号化と復号処理の例
C#(version 4.0)を利用した場合
using System.Text;
using System.IO;
using System;
using System.Security.Cryptography;
public class IA_email_encryption_test {
public static void Main(string[] args) {
string email = "john.doe@example.com";
string key = "your api secret key";
// only use first 16 bytes of the key
byte[] keybytes = Encoding.UTF8.GetBytes(key);
byte[] truncatedkeybytes = new byte[16];
Array.Copy(keybytes , truncatedkeybytes , 16);
// initialization vector is all 0's; no additonal initilization required
byte[] iv = new byte[16];
byte[] ciphertext = Encrypt(email, truncatedkeybytes, iv);
string hexciphertext = ByteArrayToHexString(ciphertext);
if(!hexciphertext.Equals( "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb")) {
Console.WriteLine("invalid encrypted value!");
} else {
Console.WriteLine("hex encoded encrypted email: "+hexciphertext);
// we decrypt merely as an exercise
string decrypted = Decrypt(ciphertext, truncatedkeybytes, iv);
Console.WriteLine("Decrypted E-mail: "+decrypted);
}
}
public static byte[] Encrypt(string plainText, byte[] key, byte[] iv ) {
var cypher = new AesManaged();
cypher.Mode = CipherMode.CBC;
cypher.Padding = PaddingMode.PKCS7;
cypher.KeySize = 128;
cypher.BlockSize = 128;
cypher.Key = key;
cypher.IV = iv;
var icTransformer = cypher.CreateEncryptor();
var msTemp = new MemoryStream();
var csEncrypt = new CryptoStream(msTemp, icTransformer, CryptoStreamMode.Write);
var sw = new StreamWriter(csEncrypt);
sw.Write(plainText);
sw.Close();
sw.Dispose();
csEncrypt.Clear();
csEncrypt.Dispose();
byte[] bResult = msTemp.ToArray();
return bResult;
}
public static string Decrypt(byte[] ciphertext, byte[] key, byte[] iv ) {
var cypher = new AesManaged();
cypher.Mode = CipherMode.CBC;
cypher.Padding = PaddingMode.PKCS7;
cypher.KeySize = 128;
cypher.BlockSize = 128;
cypher.Key = key;
cypher.IV = iv;
var icTransformer = cypher.CreateDecryptor();
var msTemp = new MemoryStream(ciphertext);
var csDecrypt = new CryptoStream(msTemp, icTransformer, CryptoStreamMode.Read);
var sr = new StreamReader(csDecrypt);
string plaintext = sr.ReadToEnd();
csDecrypt.Clear();
csDecrypt.Dispose();
return plaintext;
}
private static string ByteArrayToHexString(byte[] bytes)
{
StringBuilder sbHex = new StringBuilder();
foreach (byte b in bytes)
sbHex.AppendFormat("{0:x2}", b);
return sbHex.ToString();
}
}
Java(version 1.8)を利用した場合
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.lang.RuntimeException;
import javax.crypto.Cipher;
import javax.crypto.spec.*;
import javax.crypto.spec.SecretKeySpec;
public class Main {
public static void main(String[] args) {
String email = "john.doe@example.com";
String apiSecret = "your api secret key";
String encrypted_email = encrypt(email, apiSecret);
String decrypted_email = decrypt(encrypted_email, apiSecret);
if(encrypted_email.equals("eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb")) {
System.out.println("B64 encoded encrypted email: "+encrypted_email);
System.out.println("decrypted email: "+decrypted_email);
} else {
System.out.println("invalid encrypted value!");
}
}
static String encrypt(String message, String apiSecret) {
try {
// get api secret bytes
byte[] keyBytes = apiSecret.getBytes(Charset.forName("UTF-8"));
// get message bytes
byte[] message_bytes = message.getBytes("UTF-8");
// note that we only use the first 16 bytes of the the key
SecretKeySpec key = new SecretKeySpec(keyBytes, 0, 16, "AES");
// get appropriate cipher using PKCS5 padding
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec ivspec = new IvParameterSpec(new byte[]{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
cipher.init(Cipher.ENCRYPT_MODE, key, ivspec);
// encrypt the message
byte[] email_encrypted = cipher.doFinal(message_bytes);
// this is the value that should be sent to Indeed
return bytesToHexString(email_encrypted);
} catch (Exception e) {
System.out.println(e.getMessage());
throw new RuntimeException(e);
}
}
static String decrypt(String message, String apiSecret) {
try {
// get api secret bytes
byte[] keyBytes = apiSecret.getBytes(Charset.forName("UTF-8"));
// get message bytes
byte[] message_bytes = message.getBytes(Charset.forName("UTF-8"));
// convert from b64 encoding
message_bytes = decodeHex(message_bytes);
// Create a SecretKeySpec using api secret
// note that we only use the first 16 bytes of the the key
SecretKeySpec key = new SecretKeySpec(keyBytes, 0, 16, "AES");
// get appropriate cipher using PKCS5 padding
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec ivspec = new IvParameterSpec(new byte[]{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
cipher.init(Cipher.DECRYPT_MODE, key, ivspec);
// decrypt the message
byte[] email_decrypted = cipher.doFinal(message_bytes);
return new String(email_decrypted, "UTF-8");
} catch (Exception e) {
System.out.println(e.getMessage());
throw new RuntimeException(e);
}
}
static String bytesToHexString(byte[] in) {
final StringBuilder builder = new StringBuilder();
for(byte b : in) {
builder.append(String.format("%02x", b));
}
return builder.toString();
}
static byte[] decodeHex(byte[] data) throws Exception {
String text = new String(data, "UTF-8");
char[] chars = text.toCharArray();
int len = chars.length;
byte[] out = new byte[len >> 1];
int i = 0;
for(int j = 0; j < len; ++i) {
int f = toDigit(chars[j], j) << 4;
++j;
f |= toDigit(chars[j], j);
++j;
out[i] = (byte)(f & 255);
}
return out;
}
static int toDigit(char ch, int index) throws Exception {
int digit = Character.digit(ch, 16);
if (digit == -1) {
throw new Exception("Illegal hexadecimal character " + ch + " at index " + index);
} else {
return digit;
}
}
}
Perl(version 5.0)を利用した場合
use Crypt::CBC;
use Encode;
# your secret key
my $secret = encode('UTF-8', 'your api secret key');
# truncate key to 16 bytes
my $key = substr($secret, 0, 16);
# initialization vector of zeros
my $iv = "\0" x 16;
# create cipher
my $cipher = Crypt::CBC->new( -literal_key => 1,
-header => 'none',
-key => $key,
-keysize => 16,
-iv => $iv,
-cipher => "Crypt::OpenSSL::AES"
);
# Encrypt the UTF-8 encoded string into a hex version of the data
my $email_encrypted = $cipher->encrypt_hex(encode('UTF-8', 'john.doe@example.com'));
if($email_encrypted eq 'eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb') {
print "Hex value of encrypted: $email_encryptedn";
# Decrypt the hex string to see if it's still intact
my $email_decrypted = $cipher->decrypt_hex($email_encrypted);
print "Decrypted: $email_decryptedn";
} else {
print "invalild encrypted value! $email_encryptedn";
}
PHP(version 7.0)を利用した場合
function pkcs5_pad ($text) {
$blocksize = 16;
$pad = $blocksize - (strlen($text) % $blocksize);
$text .= str_repeat(chr($pad), $pad);
return $text;
}
function pkcs5_unpad($text) {
$pad = ord($text{strlen($text)-1});
if ($pad > strlen($text)) return false;
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;
return substr($text, 0, -1 * $pad);
}
function encrypt($str, $key) {
$iv = str_repeat("\0", 16);
$str = pkcs5_pad($str);
$opts = OPENSSL_RAW_DATA;
$encrypted = openssl_encrypt($str, 'AES-128-CBC', $key, $opts, $iv);
return $encrypted;
}
function decrypt($str, $key) {
$iv = str_repeat(""\0", 16);
$opts = OPENSSL_RAW_DATA;
$decrypted = openssl_decrypt($str, 'AES-128-CBC', $key, $opts, $iv);
return pkcs5_unpad($decrypted);
}
$api_secret = "your api secret key";
$email_address = "john.doe@example.com";
// truncate api-secret to first 16 bytes
$newkey = mb_strcut($api_secret, 0, 16, "UTF8");
// encrypt
$encrypted = encrypt($email_address, $newkey);
// we decrypt merely as an exercise
$decrypted = decrypt($encrypted, $newkey);
// this is the value to send to Indeed
$encryptedhex = bin2hex($encrypted);
if($encryptedhex != "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfba655e21c3309d9343206ae55866764e8")
print("invalid encrypted hex value!");
print("Hex value of encrypted: " . $encryptedhex . "n");
print("Decrypted: " . $decrypted . "n");
Python(version 2.7)を利用した場合
# https://pypi.python.org/pypi/pycryptodome/3.5.1
from Crypto.Cipher import AES
# https://pypi.python.org/pypi/pkcs7/0.1.2
from pkcs7 import PKCS7Encoder
# your secret key
secret = 'your api secret key'.encode('utf-8')
# truncate key to 16 bytes
key_bytes = secret[0:16]
# initialization vector of zeros
iv = '\0' * 16
# the email address to encrypt
message_plaintext = 'john.doe@example.com'
# pad the plaintext to 16 byte boundary
PKCS7encoder = PKCS7Encoder()
message_plaintext_padded = PKCS7encoder.encode(message_plaintext);
# encrypt the message bytes
cipher = AES.new(key_bytes, AES.MODE_CBC, iv)
message_encrypted_raw = cipher.encrypt(message_plaintext_padded)
# this is the value that should be sent to Indeed
message_encrypted_hex = message_encrypted_raw.encode('hex')
# we need a new instance for decrypt because the ciphers are stateful
decipher = AES.new(key_bytes, AES.MODE_CBC, iv)
# we decrypt here simply as an exercise
message_decrypted_raw = decipher.decrypt(message_encrypted_raw)
# strip padding
message_decrypted = PKCS7encoder.decode(message_decrypted_raw)
# confirm encrypted value
if message_encrypted_hex == "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb":
print 'Hex value of encrypted: ' + message_encrypted_hex
print 'Decrypted: '+message_decrypted
else:
print 'invalild encrypted value! ' + message_encrypted_hex
Python(version 3.6)を利用した場合
# https://pypi.python.org/pypi/pycryptodome/3.5.1
from Crypto.Cipher import AES
# https://pypi.python.org/pypi/pkcs7/0.1.2
from pkcs7 import PKCS7Encoder
# your secret key
secret = 'your api secret key'.encode('utf-8')
# truncate key to 16 bytes
key_bytes = secret[0:16]
# initialization vector of zeros
iv = bytes('\0' * 16, encoding='UTF-8')
# the email address to encrypt
message_plaintext = 'john.doe@example.com'
# pad the plaintext to 16 byte boundary
PKCS7encoder = PKCS7Encoder()
message_plaintext_padded = PKCS7encoder.encode(message_plaintext)
# encrypt the message bytes
message_bytes = message_plaintext_padded.encode('UTF-8')
cipher = AES.new(key_bytes, AES.MODE_CBC, iv)
message_encrypted_raw = cipher.encrypt(message_bytes)
# this is the value that should be sent to Indeed
message_encrypted_hex = message_encrypted_raw.hex()
# we decrypt here simply as an exercise
decipher = AES.new(key_bytes, AES.MODE_CBC, iv)
message_decrypted_raw = decipher.decrypt(message_encrypted_raw).decode('UTF-8')
# strip padding
message_decrypted = PKCS7encoder.decode(message_decrypted_raw)
# confirm encrypted value
if message_encrypted_hex == "eaaacff9df2e4c2a63083a303d4521f0bd41e375232a2895310179bc030addfb":
print('Hex value of encrypted: ' + message_encrypted_hex)
print('Decrypted: ' + message_decrypted)
else:
print('invalild encrypted value! ' + message_encrypted_hex)
Back to top
Indeed エントリー連携のテストと監視
Indeed では、Indeed を利用する求職者と採用企業のエクスペリエンスを向上させることを目標としています。連携の問題を避けるために、以下のセクションを再度確認してください。
Indeed エントリーのテスト
Indeed エントリーテストツールを使用して、Indeed エントリーのコードをテストしてください。テストツールを利用すると、求人のメタデータを入力し、適切なXML要素またはHTMLコードを生成できます。また、独自のXML要素またはHTMLコードを入力して、Indeed で正しくメタデータが読み込まれるかご確認いただけます。
連携の状態の監視
Indeed エントリーと連携する際、以下のことを監視できるように設定してください。
- 連携で求人への応募がきちんと送信されている。
- 質問のファイルが一貫して利用可能であり、有効なものになっている。
Indeed は応募書類が提携企業に正しく送信されているかどうかを、その他のステータスと共に監視します。問題が発生した際には、Indeed からご連絡いたします。場合によっては問題が解決するまで、一部またはすべての求人に対しての応募機能が無効となる場合があります。
注意:未送信の状態の応募が削除されることはありません。エラーが発生した場合は、最初の応募から一定の期間が経過すると自動的に応募が再試行されます。送信できなかった場合、応募書類は30日間保持され、要望に応じて再度送信を試みることができます。
連携の問題を避けるため、送信が正常に完了したすべての応募にHTTPのステータスコード200を必ず返してください。Indeed エントリーはその他のHTTPステータスコード、POSTタイムアウト、接続タイムアウトをエラーとみなします。
加えて、以下の状況に応じたステータスを返してください。
- 409(Conflict):重複した応募がすでにお客様のシステム内に存在する場合に使用してください。
- 重複した応募とは、求職者が120日以内に同じメールアドレスから同じjobidに対して行った応募を指します。
- 注意:ステータスが409の応募は重複した応募とみなされ、自動的に再度送信されることはありません。
- 410(Gone):Indeed が投稿しようとしている求人の有効期限が切れている場合、または応募が終了している場合に使用してください。
求人がスクリーニング用の質問を導入している場合、それらのファイルをホストするページが、以下の状態であることを確認してください。
- 一貫して常に利用可能。
- リダイレクトを行わない。
- 適切な形式になっている。
連携に関するよくある問題
以下のよくある問題が、POST や Question URL などを利用した連携のエラーの原因となる可能性があります。
問題 | 解決策 |
---|---|
別ページへのリダイレクト(例:301リダイレクト) |
POSTやQuestion URLがリダイレクトを含まないように必ず確認してください。 プロトコルの変更(例:HTTPをHTTPSに変更)が必要な場合は、以下の手順を必ず行ってください。
|
有効期限の切れたSSL証明書 | SSL証明書を更新してください。詳細については、信頼されたルート証明書の一覧をご覧ください。 |
誤って設定されたSSL |
問題の分析と診断を行えるように、SSLサーバーテストを使用してください(例:https://www.ssllabs.com/ssltest/)。 以下の手順を行ってください。
|
質問のJSONが無効、または Indeed が提示する必須条件に従っていない。 | スクリーニング用の質問の要件を確認してください。変更のプレビューを行うには、Indeed エントリー質問のテストツールをご利用ください。 |
リソースにアクセスする際のその他の問題(404エラー、500エラー、タイムアウト) | 通信量の多い期間に対処できるように、貴社のリソースが確実に拡張できるような対策を実装してください。また、発生する可能性のある問題を Indeed が調査できるように、適切な HTTP レスポンスコードを使用してください。 Indeed では投稿のサイズを制限していないため、Indeed からのあらゆるサイズの投稿を確実に処理できるようにしてください。このリクエストに対応できない場合は、投稿が大きすぎることを示すHTTP 413エラーを返してください。 |
XMLと連携チェックリスト
クライアントサクセス担当者にXMLフィードをお送りいただく前に、以下のチェックリストを確認してください。お客様と Indeed 双方でXML提出作業を円滑に進められるように、本チェックリストの内容を行ってください。
- XMLファイルの上部にバージョン、エンコーディング、パブリッシャー情報が含まれているか確認してください。
<?xml version=”1.0” encoding=”utf-8”?> <source> <publisher> Example Job Site</publisher> <publisherurl>http://www.examplejobsite.com</publisherurl>
- XMLファイルにすべての採用企業を記載してください。多くの求人情報は Indeed 側にすでにリストとして存在しているため、採用企業の記載が漏れている場合にはXMLファイルが公開されなくなります。
- 親会社のサブブランドや子会社の求人も含め、自社Webサイトに掲載されているすべての求人を確実に含めるようにしてください。キャリアポータルに記載された求人掲載数とXMLに記載された求人掲載数に相違があると、提供されたXMLを介して提示される求人が目に留まりにくくなる可能性があります。
注意:すべての求人で、
<url>
タグの中に固有のURLを記載する必要があります。 - XMLフィードの要素のセクションに記載された、以下のすべてのフィールドが存在し、正しい形式になっているか確認してください。
- ファイルからすべてのテスト用求人を削除してください。残っている場合、ファイルが却下されます。
- フィードに含めた Indeed エントリーデータを必ずテストしてください。問題が発生した場合、トラブルシューティングを行えるようにアライアンスマネージャーまたはクライアントサクセス担当者までご連絡ください。
- Indeed エントリーボタンのテストツールとXML内の Indeed エントリーコードを使用して、フィードが正しく動作するか確認してください。
- メタデータに含まれているすべてのURL(joburl、posturl、questions)が完全にURLエンコードされていることを確認してください。
analytics
のフィールドで、応募をオーガニック、有料掲載、Indeed ターゲット広告に分類できることを確認してください。
詳しくは、Indeed エントリーのトップレベルのJSONフィールドをご覧ください。- すべての求人が、
<job>
ノード内に Indeed エントリーを含んでいるか確認してください。 - メールを受信方法として選択している場合、メールアドレスが適切に暗号化されていることを必ず確認してください。
- SSL証明書が有効で最新の状態であることを確認してください。
- 質問項目テストツールを使用して、質問のJSONを確認してください。 注意:このテストツールは、有料掲載のデータ情報を提供しません。
- スクリーニング用の質問項目が、ベストプラクティスに従っていることを確認してください。
- 上記のステップをすべて完了していただくと、以下の手順のいずれかが実行可能になります。
- XMLを Indeed のFTPにアップロードする(アカウントが必要な場合は、クライアントサクセス担当者までご連絡ください)。
- FTPまたはURLのGETリクエストにホストされているファイルを更新する。
- XML を提出する前に確認しますので、クライアントサクセス担当者にお問い合わせください。