Operații Recrutare

Indeed XML Feed și Google Jobs JSON-LD: Cum lucru actual

ClarityHire Team(Editorial)4 min read

Două distribuție canal prim

Post job Indeed sau Google Jobs ai două opțiuni:

  1. Post direct—log Indeed.com, umple form, click publish
  2. Syndicate feed—furnizează propriul job listing format machine-readable (XML sau JSON-LD); job board pull feed și indexează

Post direct ușor dar limitat. Syndicate bit tehnic mai dar dă precis control: actualizare job status, salariu sau cerință propriul sistem și se vede Indeed în ore fără re-enter date.

Echipe hire serios foloseşte feed.

Indeed XML format

Indeed accept proprietary XML feed. Iată structură:

<?xml version="1.0" encoding="UTF-8"?>
<source>
  <publisher>Nume compania</publisher>
  <publisherurl>https://compania.com</publisherurl>
  <lastBuildDate>2026-05-21T10:00:00Z</lastBuildDate>
  <job>
    <title>Senior Backend Engineer</title>
    <date>2026-05-21T08:00:00Z</date>
    <repourl>https://compania.com/jobs/senior-backend-engineer</repourl>
    <description><![CDATA[
      <p>Căutăm senior backend engineer...</p>
      <ul>
        <li>5+ ani Python/Go experiență</li>
      </ul>
    ]]></description>
    <salary>120000</salary>
    <hiringOrganization>Compania ta</hiringOrganization>
    <jobLocation>
      <countryName>RO</countryName>
      <stateName>București</stateName>
      <cityName>București</cityName>
    </jobLocation>
    <employmentType>FULL_TIME</employmentType>
    <jobCategory>ENGINEER</jobCategory>
  </job>
</source>

Element cheie:

  • <title>: Titlu job (necesar)
  • <description>: Descriere job complet. Wrap <![CDATA[...]]> dacă conține HTML sau caracter special. Nu pune HTML în CDATA—ține text curat sau adaugă HTML markup.
  • <salary>: Salariu bază USD. Regiuni unele accept range salariu dar Indeed prim index valori unic.
  • <jobLocation>: Oraș, stat, țară. Remote dacă, fie omit fie set oraș "Remote."
  • <date>: Post job când (ISO 8601 format). Indeed asta foloseşte prioritize nou post.
  • <repourl>: Link înapoi cariere pagina job specific. Cineva click "Apply," aterizează aici.
  • <employmentType>: FULL_TIME, PART_TIME, CONTRACT, TEMPORARY

Google Jobs: JSON-LD

Google alt format JobPosting data structurată JSON-LD. Asta embed HTML script cum <script type="application/ld+json"> tag.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Senior Backend Engineer",
  "description": "Căutăm senior backend engineer...",
  "identifier": {
    "@type": "PropertyValue",
    "name": "Compania ta",
    "value": "job_123"
  },
  "datePosted": "2026-05-21",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Compania ta",
    "sameAs": "https://compania.com",
    "logo": "https://compania.com/logo.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "123 Main St",
      "addressLocality": "București",
      "addressRegion": "București",
      "postalCode": "010000",
      "addressCountry": "RO"
    }
  },
  "baseSalary": {
    "@type": "PriceSpecification",
    "currency": "USD",
    "minValue": 120000,
    "maxValue": 160000,
    "unitText": "YEAR"
  },
  "employmentType": "FULL_TIME",
  "validThrough": "2026-06-21"
}
</script>

Camp critic Google index:

  • datePosted: Trebuie prezent și recent. Google de-rank vech post.
  • hiringOrganization: Nume companie și (optional) logo. Folosit brand employer snippet.
  • baseSalary: Salariu range (min/max). Optional dar îmbunătățire CTR.
  • validThrough: Job closing dată. Google elimina post după dată asta.
  • jobLocation: Adresă poștală complet sau remote.

CDATA capcane și caracter special

XML caracter special cum <, > și & break feed. Wrap descriere în <![CDATA[...]]>:

<description><![CDATA[
Căutăm developer cu 5+ ani experiență.
Experiență: Java, Spring Boot, Docker.
]]></description>

În CDATA poți includ plain HTML:

<description><![CDATA[
<p>Căutăm developer cu 5+ ani experiență.</p>
<ul>
  <li>Java 8+</li>
  <li>Spring Boot</li>
  <li>Docker</li>
</ul>
]]></description>

Fără CDATA, <p> și <li> tag break XML parser. Indeed-ul feed validator va respinge întreg feed.

Salariu encoding

Indeed XML: Valoare salariu unic singur. Ai range, foloseşte midpoint sau low end.

<salary>140000</salary>

Google Jobs: Suportă range:

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

Job orar, foloseşte:

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

Frecvență actualizare și refresh

URL feed o dată setup, Indeed crawl periodic (obișnuit zilnic, uneori mai frecvent job schimbat des). Închideți job, elimina feed sau set closing dată. Indeed va auto de-index.

Google Jobs crawl HTML pagine unde embed JobPosting JSON-LD. Fiecare timp candidat vizitează job pagina, Google crawler indexează. Elimini JSON-LD markup, job dispare Google Jobs în zile.

Validare și debug

Pentru Indeed XML:

  • Foloseşte Indeed Feed Validator test feed înainte conecta
  • Eroare comun: CDATA malformată, câmp necesar missing, format dată invalid

Pentru Google Jobs:

Cum ClarityHire generează feed

ClarityHire auto-generează amândoi Indeed XML feed /api/jobs/feed.xml și Google Jobs JSON-LD template embed job pagine /careers/jobs/[job-id].

Actualizezi job (titlu, salariu, descriere), feed refresh automat. Închis job elimina feed în 2 ore. Sistem respecta job visibility flag: draft job nu apare feed.

TL;DR

Indeed așteptă XML CDATA-wrap descriere, salariu și locație. Google Jobs așteptă JSON-LD markup HTML cu datePosted, validThrough și salariu range. Amândoi ISO dată format (YYYY-MM-DD sau ISO 8601 timestamp). CDATA-ul prieten când wrap HTML descriere XML. Validează înainte deploy. Auto-elimina închis job feed. Test Google Rich Result Test și Indeed validator.

O dată setup, job distribu Indeed și Google fără re-entry. Setup ia zi; leverage continuu imens.

job board integrarexml feedgoogle jobsjson-ldjob posting

Articole conexe