Fluxuri XML Indeed și Google for Jobs JSON-LD, explicate
Cele două canale principale de distribuție
Atunci când postezi un loc de muncă pe Indeed sau Google for Jobs, ai două opțiuni:
- Postare directă — conectează-te pe Indeed.com, completează un formular, dă clic pe Publicare
- Sindicare prin flux — furnizează propria ta listă de locuri de muncă într-un format ușor de citit de mașini (XML sau JSON-LD); site-ul de anunțuri extrage din fluxul tău și o indexează
Postarea directă este ușoară dar limitată. Sindicarea este puțin mai tehnică, dar ți oferă control precis: poți actualiza status-ul unui loc de muncă, salariul sau cerințele în sistemul tău, și se reflectă pe Indeed în câteva ore fără a trebui să reintrodu datele.
Majoritatea echipelor de angajare serioase folosesc fluxuri.
Formatul XML Indeed
Indeed acceptă un flux XML proprietar. Iată structura:
<?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>
Elemente cheie:
<title>: Titlul locului de muncă (obligatoriu)<description>: Descrierea completă a locului de muncă. Avvolge în<![CDATA[...]]>dacă conține HTML sau caractere speciale. Nu pune HTML în interiorul CDATA — ține-o ca text curat sau adaugă marcajul HTML.<salary>: Salariul de bază în USD. Unele regiuni acceptă intervale de salariu, dar Indeed indexează în principal valori unice.<jobLocation>: Oraș, județ, țară. Dacă este remote, fie omite fie setează orașul la "Remote."<date>: Când a fost postat locul de muncă (format ISO 8601). Indeed folosește aceasta pentru a prioritiza postările mai recente.<repourl>: Link înapoi la pagina ta de cariere pentru acel loc de muncă. Când cineva dă clic pe "Aplică", aterizeaza aici.<employmentType>: FULL_TIME, PART_TIME, CONTRACT, TEMPORARY
Google for Jobs: JSON-LD
Google are un format diferit numit date structurate JobPosting în JSON-LD. Aceasta este încorporată în HTML-ul tău ca tag <script type="application/ld+json">.
<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>
Câmpuri critice pentru ca Google să indexeze:
datePosted: Trebuie să fie prezent și recent. Google reduce ranking-ul postărilor vechi.hiringOrganization: Numele companiei și (opțional) logo. Folosit pentru fragmentul brand-ului angajatorului.baseSalary: Interval de salariu (min/max). Opțional dar îmbunătățește CTR.validThrough: Data de închidere a locului de muncă. Google elimină postările după această dată.jobLocation: Adresă poștală completă sau remote.
Capcane CDATA și caractere speciale
În XML, caractere speciale cum ar fi <, >, și & întrerup fluxul. Avvolge descrierea ta în <![CDATA[...]]>:
<description><![CDATA[
We are looking for a developer with 5+ years experience.
Experience with: Java, Spring Boot, Docker.
]]></description>
În interiorul CDATA, poți include HTML simplu:
<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>
Fără CDATA, etichetele <p> și <li> întrerup parser-ul XML. Validatorul de flux al Indeed va respinge întregul flux.
Codificarea salariilor
Indeed XML: Doar o singură valoare de salariu. Dacă ai un interval, folosește punctul de mijloc sau capătul inferior.
<salary>140000</salary>
Google for Jobs: Suportă intervale:
"baseSalary": {
"@type": "PriceSpecification",
"currency": "USD",
"minValue": 120000,
"maxValue": 160000,
"unitText": "YEAR"
}
Dacă locul de muncă este orar, folosește:
"baseSalary": {
"@type": "PriceSpecification",
"currency": "USD",
"minValue": 45,
"maxValue": 65,
"unitText": "HOUR"
}
Frecvența actualizărilor și reîmprospătări
Odată ce ai configurat o adresă URL de flux, Indeed o scanează periodic (de obicei zilnic, uneori mai frecvent dacă locurile de muncă se schimbă des). Când un loc de muncă se închide, elimină-l din flux sau setează o dată de închidere. Indeed îl va dezindexe automat.
Google for Jobs scanează paginile HTML în care încorporezi marcajul JSON-LD JobPosting. De fiecare dată când un candidat vizitează pagina ta de loc de muncă, crawler-ul Google o indexează. Dacă elimini marcajul JSON-LD, locul de muncă dispare din Google for Jobs în câteva zile.
Validare și depanare
Pentru Indeed XML:
- Folosește Feed Validator al Indeed pentru a testa fluxul tău înainte de a-l conecta
- Erori frecvente: CDATA malformat, câmpuri obligatorii lipsă, format dată nevalid
Pentru Google for Jobs:
- Folosește Instrumentul de testare a datelor structurate al Google sau versiunea mai nouă Rich Results Test
- Verifică pentru datePosted lipsă, formate dată nevalide, sau probleme de codificare a șirurilor asemănătoare CDATA
Cum generează ClarityHire fluxuri
ClarityHire generează automat atât un flux XML Indeed la /api/jobs/feed.xml cât și un șablon JSON-LD Google for Jobs pe care îl încorporezi pe paginile tale de loc de muncă la /careers/jobs/[job-id].
Atunci când actualizezi un loc de muncă (titlu, salariu, descriere), fluxurile se reîmprospătează automat. Locurile de muncă închise sunt eliminate din fluxuri în decurs de 2 ore. Sistemul respectă pavilionul visibility al locului tău de muncă: locurile în proiect nu apar în fluxuri.
TL;DR
Indeed se așteaptă la XML cu descrieri avvolte în CDATA, salariu și locație. Google for Jobs se așteaptă la marcaj JSON-LD pe HTML-ul tău cu datePosted, validThrough și intervale de salariu. Ambele folosesc formate de dată ISO (YYYY-MM-DD sau ISO 8601 timestamps). CDATA este prietenul tău atunci când avvolpezi descrieri HTML în XML. Validează înainte de implementare. Elimină automat locurile de muncă închise din fluxuri. Testează cu Rich Results Test al Google și validatorul Indeed.
Odată configurat, locurile tale de muncă se distribuie pe Indeed și Google fără reintrare. Configurarea durează o zi; levier-ul în curs este imens.