採用オペレーション

Indeed XMLフィード と Google for Jobs JSON-LD、解説

ClarityHire Team(Editorial)8 min read

2つの主要な配信チャネル

Indeed または Google for Jobs に求人を掲載する場合、2つのオプションがあります:

  1. 直接掲載 — Indeed.com にログインして、フォームに入力し、公開をクリック
  2. フィード経由での配信 — 機械可読形式(XMLまたはJSON-LD)で独自の求人リストを提供すると、求人ボードがフィードから引き出してインデックスします

直接掲載は簡単ですが制限があります。一方、フィード配信はやや技術的ですが、正確な制御が可能です。システム内で求人の状態、給与、または要件を更新できます。これらの変更は数時間以内に Indeed に反映され、データを再入力する必要はありません。

ほとんどの真摯な採用チームはフィードを使用しています。

Indeed XML形式

Indeed は独自の XML フィードを受け入れます。以下はその構造です:

<?xml version="1.0" encoding="UTF-8"?>
<source>
  <publisher>Your Company Name</publisher>
  <publisherurl>https://yourcompany.com</publisherurl>
  <lastBuildDate>2026-05-21T10:00:00Z</lastBuildDate>
  <job>
    <title>Senior Backend Engineer</title>
    <date>2026-05-21T08:00:00Z</date>
    <repourl>https://yourcompany.com/jobs/senior-backend-engineer</repourl>
    <description><![CDATA[
      <p>We are hiring a senior backend engineer...</p>
      <ul>
        <li>5+ years Python/Go experience</li>
      </ul>
    ]]></description>
    <salary>120000</salary>
    <hiringOrganization>Your Company</hiringOrganization>
    <jobLocation>
      <countryName>US</countryName>
      <stateName>California</stateName>
      <cityName>San Francisco</cityName>
    </jobLocation>
    <employmentType>FULL_TIME</employmentType>
    <jobCategory>ENGINEER</jobCategory>
  </job>
</source>

主要な要素:

  • <title>: 職種名(必須)
  • <description>: 完全な求人説明。HTMLまたは特殊文字が含まれている場合は <![CDATA[...]]> で囲んでください。CDATA 内部 に HTML を含めないでください。テキストをきれいな状態に保つか、HTML マークアップを追加してください。
  • <salary>: USD での基本給。一部の地域は給与範囲を受け入れていますが、Indeed は主に単一の値をインデックスしています。
  • <jobLocation>: 都市、州、国。リモートの場合は、省略するか、都市を「Remote」に設定してください。
  • <date>: 求人がいつ掲載されたか(ISO 8601形式)。Indeed はこれを使用して新しい掲載を優先します。
  • <repourl>: その特定の求人のキャリアページへのリンク。誰かが「Apply」をクリックすると、ここにランディングします。
  • <employmentType>: FULL_TIME、PART_TIME、CONTRACT、TEMPORARY

Google for Jobs: JSON-LD

Google は JSON-LD で JobPosting 構造化データと呼ばれる異なる形式を使用しています。これは <script type="application/ld+json"> タグとしてHTML に埋め込まれます。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Senior Backend Engineer",
  "description": "We are hiring a senior backend engineer...",
  "identifier": {
    "@type": "PropertyValue",
    "name": "Your Company",
    "value": "job_123"
  },
  "datePosted": "2026-05-21",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Your Company",
    "sameAs": "https://yourcompany.com",
    "logo": "https://yourcompany.com/logo.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "123 Main St",
      "addressLocality": "San Francisco",
      "addressRegion": "CA",
      "postalCode": "94105",
      "addressCountry": "US"
    }
  },
  "baseSalary": {
    "@type": "PriceSpecification",
    "currency": "USD",
    "minValue": 120000,
    "maxValue": 160000,
    "unitText": "YEAR"
  },
  "employmentType": "FULL_TIME",
  "validThrough": "2026-06-21"
}
</script>

Google がインデックスするための重要なフィールド:

  • datePosted: 存在し、かつ最近である必要があります。Google は古い掲載のランクを下げます。
  • hiringOrganization: 企業名と(オプション)ロゴ。雇用主ブランドスニペットに使用されます。
  • baseSalary: 給与範囲(最小/最大)。オプションですが、CTR を改善します。
  • validThrough: 求人終了日。Google はこの日付後の掲載を削除します。
  • jobLocation: 完全な郵便住所またはリモート。

CDATA の落とし穴と特殊文字

XML では、<>& などの特殊文字がフィードを破壊します。説明を <![CDATA[...]]> で囲んでください:

<description><![CDATA[
We are looking for a developer with 5+ years experience.
Experience with: Java, Spring Boot, Docker.
]]></description>

CDATA 内では、プレーン HTML を含めることができます:

<description><![CDATA[
<p>We are looking for a developer with 5+ years experience.</p>
<ul>
  <li>Java 8+</li>
  <li>Spring Boot</li>
  <li>Docker</li>
</ul>
]]></description>

CDATA がないと、<p> タグと <li> タグが XML パーサーを破壊します。Indeed のフィード検証ツールはフィード全体を拒否します。

給与のエンコード

Indeed XML: 単一の給与値のみ。範囲がある場合は、中間値または低い方を使用してください。

<salary>140000</salary>

Google for Jobs: 範囲をサポート:

"baseSalary": {
  "@type": "PriceSpecification",
  "currency": "USD",
  "minValue": 120000,
  "maxValue": 160000,
  "unitText": "YEAR"
}

時給制の場合は、以下を使用してください:

"baseSalary": {
  "@type": "PriceSpecification",
  "currency": "USD",
  "minValue": 45,
  "maxValue": 65,
  "unitText": "HOUR"
}

更新頻度とリフレッシュ

フィード URL を設定したら、Indeed は定期的にクロールします(通常は毎日、求人が頻繁に変わる場合はより頻繁)。求人が終了したら、フィードから削除するか、終了日を設定してください。Indeed は自動的にインデックスを削除します。

Google for Jobs は、JobPosting JSON-LD を埋め込むHTML ページをクロールします。候補者が求人ページにアクセスするたびに、Google のクローラーがインデックスします。JSON-LD マークアップを削除すると、数日以内に Google for Jobs から求人が消えます。

検証とデバッグ

Indeed XML の場合:

  • 接続する前に、Indeed の フィード検証ツール を使用してフィードをテストしてください
  • 一般的なエラー: 不正な形式の CDATA、必須フィールドの不足、無効な日付形式

Google for Jobs の場合:

ClarityHire がフィードを生成する方法

ClarityHire は /api/jobs/feed.xml で Indeed XML フィードと、求人ページの /careers/jobs/[job-id] に埋め込む Google for Jobs JSON-LD テンプレートの両方を自動生成します。

求人を更新する(職種、給与、説明)と、フィードは自動的にリフレッシュされます。終了した求人は 2 時間以内にフィードから削除されます。システムは求人の visibility フラグを尊重します。下書き求人はフィードに表示されません。

TL;DR

Indeed は CDATA でラップされた説明、給与、および場所を含む XML を期待しています。Google for Jobs は HTML の JSON-LD マークアップと、datePostedvalidThrough、および給与範囲を期待しています。どちらも ISO 日付形式(YYYY-MM-DD または ISO 8601 タイムスタンプ)を使用します。CDATA は XML で HTML 説明をラップするときの味方です。デプロイ前に検証してください。終了した求人をフィードから自動削除します。Google のリッチリザルトテストと Indeed の検証ツールでテストしてください。

設定後、求人は Indeed と Google に再入力なしで配信されます。セットアップには 1 日かかりますが、継続的な効果は膨大です。

求人ボード統合XMLフィードGoogle for JobsJSON-LD求人掲載

関連記事