Panduan JobPosting Schema
cara implement JobPosting data terstruktur untuk muncul di Google untuk Jobs — five diperlukan properties, recommended fields itu sebenarnya drive clicks, remote-job markup, konten policies itu mendapatkan postings disapproved, dan cara hapus expired jobs correctly.
1 sinyal bukti di halaman ini
- Alat aktif terkaitRich-Result Eligibility Checker
JobPosting schema adalah schema.org/JSON-LD markup Anda put pada sebuah single job-listing halaman untuk become eligible untuk Google untuk Jobs. Five properties adalah diperlukan — judul, deskripsi, datePosted, hiringOrganization, dan jobLocation (dengan sebuah fully-remote exception) — dan recommended ones (validThrough, employmentType, baseSalary) adalah di mana click-melalui dan filtering nilai lives. konten-schema parity adalah non-negotiable: semuanya di JSON-LD harus menjadi terlihat pada halaman. paling umum disapproval penyebab adalah putting markup pada sebuah listing halaman alih-alih satu job per halaman. Expired-job hygiene adalah sebuah ongoing obligation, tidak sebuah satu-time setup — leave dead jobs langsung dan Anda risk sebuah manual tindakan. dan Google's pengindeksan API adalah scoped untuk JobPosting dan BroadcastEvent hanya; misusing ini sebagai sebuah umum 'indeks lebih cepat' button dapat cost Anda access. Bing mendukung yang sama vocabulary tetapi documents ini far lebih lightly — lean Google.
TL;DR — JobPosting schema adalah code Anda tambahkan untuk sebuah job-listing halaman itu labels role — “ini adalah itu job title,” (terjemahan) “ini adalah job judul,” “this is the employer,” (terjemahan) “ini adalah employer,” “this is the salary,” (terjemahan) “ini adalah salary,” “this is where it’s based” (terjemahan) “ini adalah di mana ini adalah based” — so Google dapat put ini di Google untuk Jobs, job-penelusuran box Anda see di top dari hasil. Anda perlu five detail di minimum: job judul, sebuah deskripsi, date Anda posted ini, employer’s name, dan location. Put ini pada sebuah halaman dengan satu job per halaman — tidak pernah sebuah halaman itu lists lots dari jobs di setelah.
Apa JobPosting schema adalah
«When you post a job on your careers page, a person can read the title, the company, the pay, and where it’s based. A search engine sees plain text and has to guess. JobPosting schema spells it out in code, using the shared vocabulary from schema.org, so Google can understand the listing and show it in Google for Jobs — the little job-search widget with company logos that appears at the top of results for searches like “marketing jobs near me.”
Bukti untuk klaim ini Schema.org JobPosting describes a job vacancy and properties such as title, datePosted, hiringOrganization, and jobLocation. Cakupan: Schema.org vocabulary; Google applies additional job-search requirements. Tingkat keyakinan: tinggi · Diverifikasi: Schema.org: JobPosting» (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
ini adalah ditulis di sebuah kecil block dari code called JSON-LD itu sits di halaman tanpa mengubah bagaimana halaman looks.
Apa Google perlu di minimum
untuk menjadi eligible untuk Google untuk Jobs, five hal adalah diperlukan:
- judul — job’s judul, like “Barista” (terjemahan) “Barista” atau “Software Engineer” (terjemahan) “Software Engineer” (tidak judul dari halaman web).
- deskripsi — penuh job deskripsi.
- datePosted — date Anda posted job.
- hiringOrganization — company’s nyata name.
- jobLocation — di mana person akan sebenarnya berfungsi.
ada satu exception untuk location aturan: jika job adalah 100% remote, Anda flag ini sebagai remote alih-alih giving sebuah office address (lebih pada itu di Advanced).
Bukti untuk klaim ini Google requires JobPosting markup on a single job detail page with required job and organization information. Cakupan: Google Search JobPosting requirements; listing pages and incomplete postings are not eligible. Tingkat keyakinan: tinggi · Diverifikasi: Google: JobPosting structured datadetail itu mendapatkan Anda clicked
five diperlukan fields mendapatkan Anda di. sebuah sedikit opsional ones mendapatkan Anda noticed, karena Google untuk Jobs lets orang filter oleh them:
- salary — menunjukkan pay membuat Anda listing stand out (dan salary-disclosure laws adalah spreading, so periksa apakah Anda jurisdiction memerlukan ini).
- employment jenis — penuh-time, bagian-time, contract, dan so pada.
- sebuah expiry date — so Google knows ketika job closes.
hal sebagian besar orang mendapatkan wrong
Satu job per halaman. Anda dapat’t put JobPosting markup pada sebuah halaman itu lists semua Anda open peran di setelah — Google hanya memungkinkan ini pada sebuah halaman untuk sebuah single job. ini adalah angka-satu alasan listings mendapatkan rejected.
dan ketika sebuah job adalah filled, take ini down atau mark ini closed. Leaving expired jobs langsung adalah terhadap Google’s aturan — Google says ini dapat take manual tindakan dan pull posting dari Google untuk Jobs experience, yang adalah scoped untuk Anda job listings, tidak sebuah blanket penalty pada rest dari Anda situs’s penelusuran rankings. Setting sebuah fake future expiry date untuk pertahankan sebuah filled job “alive” (terjemahan) “alive” tidak berfungsi — halaman memiliki untuk reflect reality.
ingin penuh versi — tepat diperlukan dan recommended properties, cara mark up remote dan hybrid peran, konten policies itu mendapatkan postings disapproved, bagaimana untuk hapus expired jobs right cara, dan bagaimana Bing differs? Switch untuk Advanced tab.
Bukti untuk klaim ini Google documents jobLocationType TELECOMMUTE and applicantLocationRequirements for fully remote jobs. Cakupan: Google Search JobPosting remote-job requirements; hybrid roles should not be marked as fully remote. Tingkat keyakinan: tinggi · Diverifikasi: Google: JobPosting structured dataTL;DR — JobPosting schema (
schema.org/JobPosting, di JSON-LD) membuat sebuah single-job halaman eligible untuk Google untuk Jobs. Google memerlukan five properties —title,description,datePosted,hiringOrganization,jobLocation— denganapplicantLocationRequirements/jobLocationType: TELECOMMUTEsubstituting untuk location pada fully remote peran. recommended set (validThrough,employmentType,baseSalary,identifier,directApply) adalah di mana CTR dan filtering nilai lives. Dua hard aturan: satu job per halaman, dan konten-schema parity (setiap JSON-LD nilai harus menjadi terlihat pada halaman). Expired-job hygiene adalah sebuah ongoing compliance task dengan three sanctioned removal metode; leaving expired jobs langsung risks sebuah manual tindakan. Google’s pengindeksan API adalah scoped untuk JobPosting dan BroadcastEvent hanya dan adalah now approval-gated — jangan treat ini sebagai sebuah umum “index lebih cepat” (terjemahan) “indeks lebih cepat” button. Bing mendukung yang sama vocabulary tetapi documents ini far lebih thinly; lean Google.
My umum stance pada schema hasn’t changed untuk job listings: I’m sebuah fan dari markup sebagai panjang sebagai ini earns Anda sebuah penelusuran fitur. JobPosting clears itu bar cleanly — ini adalah gate untuk Google untuk Jobs, sebuah genuine SERP surface — so ini adalah worth melakukan, dan worth melakukan precisely. precision adalah seluruh game di sini, karena job listings adalah satu dari lebih heavily policed structured-data jenis Google berjalan.
five diperlukan properties
Google’s job-posting structured-data documentation lists five diperlukan properties. Miss apa pun satu dan halaman tidak eligible:
title— “Itu title dari itu job (tidak itu title dari itu posting). Misalnya, ‘Software Engineer’ atau ‘Barista’.” (terjemahan) “ judul dari job (tidak judul dari posting). misalnya, ‘Software Engineer’ atau ‘Barista’.” (jump untuk quote) ini trips orang up constantly — nilai adalah role, tidak Anda halaman’s<h1>atau SEO judul.description— penuh HTML job deskripsi. ini harus tidak hanya repeat judul; Google ingin nyata, menyelesaikan deskripsi.datePosted— original date employer posted job, di ISO 8601 (e.g.,2017-01-24).hiringOrganization— “Itu organization offering itu job position. Ini harus menjadi itu name dari itu company (misalnya, ‘Starbucks, Inc’).” (terjemahan) “ organization offering job position. ini harus menjadi name dari company (misalnya, ‘Starbucks, Inc’).” (jump untuk quote) untuk sebuah job board ini harus menjadi nyata employer, tidak board.jobLocation— physical worksite di mana employee akan report, tidak place job adalah posted. Tidak diperlukan jika Anda supplyapplicantLocationRequirementsuntuk sebuah remote role.
sebuah minimal, valid contoh:
{
"@context": "https://schema.org/",
"@type": "JobPosting",
"title": "Software Engineer",
"description": "<p>Full job description in HTML…</p>",
"datePosted": "2026-06-27",
"hiringOrganization": {
"@type": "Organization",
"name": "Example Co",
"sameAs": "https://www.example.com"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "Raleigh",
"addressRegion": "NC",
"addressCountry": "US"
}
}
}recommended properties itu sebenarnya move needle
Eligibility muncul dari diperlukan five, tetapi CTR dan filtering nilai muncul hampir entirely dari recommended set — ini adalah fields Google untuk Jobs lets searchers filter pada:
validThrough— date posting expires, di ISO 8601. ada sebuah nuance worth stating plainly: omit ini entirely jika job tidak pernah expires, tetapi jika job melakukan memiliki sebuah end date, sertakan ini dan pertahankan ini accurate. Leaving sebuah stalevalidThroughdi place adalah sebuah compliance masalah, tidak sebuah harmless default.employmentType—FULL_TIME,PART_TIME,CONTRACTOR,TEMPORARY,INTERN,VOLUNTEER,PER_DIEM, atauOTHER(sebuah array adalah diizinkan).baseSalary(sebuahMonetaryAmount) — sebenarnya base salary disediakan oleh employer, tidak sebuah estimate; hanya employer dapat supply ini. gunakanunitTextdariHOUR/DAY/WEEK/MONTH/YEAR, danminValue/maxValueuntuk sebuah range. dengan pay-transparency laws spreading, ini adalah increasingly tidak opsional dalam praktik.identifier(sebuahPropertyValue) — employer’s unique job/req ID; penting untuk de-duplication, terutama pada aggregators.directApply— indicates apakah posting’s URL lets seseorang apply secara langsung pada itu situs alih-alih mengalihkan elsewhere.
Beta properties
Google requested sebuah set dari additional properties back di 2021 itu adalah masih flagged
beta: educationRequirements.credentialCategory,
experienceRequirements.monthsOfExperience, dan experienceInPlaceOfEducation.
ini grew out dari Google’s Career Certificate push selama pandemic-era job
market. Google’s own framing di launch adalah itu karena ini adalah masih developing bagaimana
ini menggunakan informasi, Anda mungkin tidak see apa pun appearance atau effect di Google Search
right away.
My take: tambahkan them jika mereka’re cheap untuk populate dari Anda ATS, tetapi jangan hold up sebuah launch untuk them — mereka’re future-proofing, tidak eligibility.
Remote dan hybrid jobs: TELECOMMUTE selesai right
Remote markup memiliki three distinct patterns, dan getting ini wrong adalah sebuah classic konten-mismatch flag.
Fully remote. Set jobLocationType untuk TELECOMMUTE, untuk jobs di yang
employee dapat atau harus berfungsi remotely 100% dari time. Google memerlukan setiap
TELECOMMUTE posting untuk specify setidaknya satu eligible country — melalui
applicantLocationRequirements (Google’s preferred metode) atau, failing itu, sebuah
default taken dari jobLocation. ada Tidak valid scenario di mana sebuah remote job
carries zero location informasi: “unrestricted” (terjemahan) “unrestricted” dalam praktik berarti listing setiap
country Anda’ll accept applicants dari, tidak omitting field. pada-halaman
deskripsi harus dengan jelas say role adalah fully remote too — konten-schema parity
applies di sini sebagai banyak sebagai anywhere.
{
"@type": "JobPosting",
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": {
"@type": "Country",
"name": "USA"
}
}itu contoh adalah sebuah US-hanya remote role. untuk “remote dalam itu EU” (terjemahan) “remote di dalam EU” atau apa pun
multi-country role, repeat applicantLocationRequirements untuk setiap eligible
country — property name adalah yang sama apakah Anda’re naming satu country atau ten.
Hybrid. sebuah hybrid role adalah tidak fully remote. Memberikan ini sebuah nyata office jobLocation,
dan hanya tambahkan TELECOMMUTE flag jika role genuinely qualifies sebagai remote —
Google’s own hybrid contoh pairs sebuah physical jobLocation dengan jobLocationType
(plus applicantLocationRequirements ketika remote option adalah itself
geography-restricted). mistake untuk hindari: marking sebuah occasional-berfungsi-dari-home
role sebagai TELECOMMUTE. itu’s sebuah konten mismatch menunggu untuk happen — TELECOMMUTE
adalah untuk 100%-remote berfungsi, dan halaman memiliki untuk back itu up. Ketika di doubt,
Decision Trees tab memiliki sebuah “seharusnya ini gunakan TELECOMMUTE?” (terjemahan) “seharusnya ini gunakan TELECOMMUTE?” walkthrough.
Google untuk Jobs eligibility dan regional availability
Satu surprise untuk international tim: Google untuk Jobs tidak global. ini adalah langsung di 50+ countries di seluruh North America, Latin America, Europe, Middle East dan North Africa, Sub-Saharan Africa, dan Asia — tetapi tidak di mana-mana. jika Anda listings adalah technically perfect dan masih tidak menunjukkan, periksa bahwa experience adalah tersedia di Anda target country sebelum Anda spend sebuah day debugging Anda JSON-LD.
konten policies itu mendapatkan postings disapproved
Google’s job-posting konten policies adalah stricter daripada sebagian besar structured-data aturan, dan mereka’re worth knowing oleh mereka nyata names karena Search Console akan cite them. dari Google’s documentation:
- Single-job halaman hanya. “Itu JobPosting markup harus hanya menjadi digunakan pada halaman itu contain a single job posting.” (terjemahan) “ JobPosting markup harus hanya menjadi digunakan pada halaman itu berisi sebuah single job posting.” (jump untuk quote) ini adalah single sebagian besar umum dunia nyata disapproval — Tidak markup pada listing/penelusuran-hasil halaman.
- Irrelevant konten — posting’s konten harus menjadi relevant untuk job.
- Incomplete konten — Google tidak izinkan job postings dengan incomplete job deskripsi.
- Misrepresentation — Tidak fake jobs, keyword stuffing, salah location data, impersonation, atau posting seseorang else’s listing tanpa authorization.
- Profanity — Tidak obscene, profane, atau offensive language.
- Disguised ads / promotional konten — Tidak affiliate-program listings atau lainnya promotional konten dressed up sebagai sebuah job.
- Expired postings — Google tidak izinkan expired job postings. “Ideally Anda seharusnya remove expired job postings dari Anda website.” (terjemahan) “Ideally Anda seharusnya hapus expired job postings dari Anda situs web.” (jump untuk quote)
- Jobs tanpa sebuah cara untuk apply — setiap posting perlu sebuah cara untuk apply (career-fair invites dan login-gated postings adalah exempted).
- Resume collection — hanya untuk open, actively-hiring positions.
- Job permintaan — markup adalah untuk sebenarnya openings, tidak solicitations dari orang seeking berfungsi.
- Payment diperlukan — tidak pernah memerlukan sebuah applicant untuk pay.
- Editorial konten — proper grammar dan capitalization; Tidak semua-caps spam.
melalui-line: konten-schema parity adalah non-negotiable. setiap nilai di JSON-LD — salary, remote status, employment jenis — harus menjadi visibly present di human-readable halaman, atau Google dapat treat mismatch sebagai misrepresentation.
Menangani expiration dan removal correctly
ini adalah bagian tim di bawah-bangun. Expired-job hygiene adalah sebuah ongoing obligation, tidak sebuah satu-time setup task — Anda perlu sebuah proses (sebuah cron job, sebuah ATS integration, atau sebuah pengindeksan API panggil) untuk pull sebuah role moment ini closes. Google sanctions three removal metode:
- Set
validThroughuntuk sebuah date di past dan leave halaman up briefly. - hapus halaman entirely dan mengembalikan
404atau410. - Strip JobPosting markup dari halaman.
risk jika Anda tidak: leaving expired postings langsung violates konten policies,
dan Google says respons dapat sertakan manual tindakan itu menghapus job
posting(s) dari job penelusuran experience pada Google — itu’s scoped untuk Anda job
listings’ eligibility untuk Jobs fitur, tidak sebuah automatic penalty terhadap rest
dari Anda situs’s organic rankings. Bukti untuk klaim ini Google requires expired job postings to be removed or marked with a past validThrough value and no longer exposed as active jobs. Cakupan: Google Search JobPosting expiration policy; stale postings can trigger manual actions. Tingkat keyakinan: tinggi · Diverifikasi: Google: JobPosting structured data Setting sebuah future
validThrough pada sebuah job itu’s sebenarnya filled melakukan tidak pertahankan ini “safe” (terjemahan) “safe” — halaman
harus reflect reality.
untuk lebih cepat removal dan memperbarui pada job URLs secara khusus, Google recommends -nya pengindeksan API di atas menunggu untuk sebuah wajar re-crawl atau sebuah sitemap ping — see berikutnya bagian untuk cakupan dan access caveats.
Duplicate dan syndicated postings
sebuah very umum dunia nyata case: yang sama req posted untuk Anda careers halaman dan three job boards. ini adalah fine. John Mueller memiliki mengatakan itu memiliki yang sama job posted pada berbeda situs web adalah very umum dan yang diharapkan, dan itu hosting yang sama listing di berbeda times atau pada berbeda subdomains seharusnya menjadi fine too — Google de-duplicates identical listings alih-alih penalizing them, dan he’s indicated yang sama applies untuk Google untuk Jobs.
Mueller’s remarks di atas adalah paraphrased dari sebuah February 2022 Google Hangout sebagai recapped oleh iloveseo.com; I’m summarizing alih-alih quoting karena I sourced ini melalui itu sekunder recap. Apa masih applies regardless:hiringOrganization
harus menjadi nyata employer, dan Tidak misrepresentation. pengindeksan API adalah scoped — dan now gated
Google’s pengindeksan API adalah tidak sebuah umum “mendapatkan indexed lebih cepat” (terjemahan) “mendapatkan terindeks lebih cepat” alat. Per Google’s
pengindeksan API quickstart, ini dapat hanya menjadi digunakan untuk crawl halaman dengan either JobPosting
atau BroadcastEvent embedded di sebuah VideoObject — job postings adalah satu dari hanya dua
legitimate gunakan cases. Submitting sebuah URL adalah sebuah notification, tidak sebuah jaminan: ini
tidak jaminan itu Google akan crawl, indeks, sertakan, peringkat, atau display halaman
pada apa pun particular timeline.
Dua hal memiliki changed landscape di sini:
- Access adalah now approval-gated. default per-day quota adalah modest, dan getting bermakna volume now memerlukan filling out sebuah Google approval form alih-alih menjadi auto-enabled. Cite Google’s own Requesting Approval dan Quota halaman sebagai utama sumber untuk ini.
- Google adalah visibly protecting lane dari spam. Google reps memiliki repeatedly warned terhadap misusing pengindeksan API untuk push arbitrary, unsupported halaman jenis — recommendation adalah untuk stick untuk terdokumentasi, didukung gunakan cases. Karena JobPosting adalah satu dari hanya dua dari itu, ini penting secara langsung: abuse API untuk non-job konten dan Anda risk losing access untuk sebuah channel Anda job listings sebenarnya bergantung pada.
Troubleshooting di Search Console
Ketika sebuah listing tidak tampilkan, berfungsi ini di order — Playbooks tab lays ini out sebagai sebuah linear runbook, tetapi pendek versi:
- Validate markup dengan Rich hasil Test dan konfirmasi semua five diperlukan properties parse tanpa error.
- Konfirmasi satu job per halaman — paling umum disapproval adalah JobPosting markup pada sebuah listing/indeks halaman.
- periksa konten-schema parity — setiap JSON-LD nilai (salary, remote status, employment jenis) harus menjadi terlihat pada halaman.
- periksa
validThroughdan expiry — sebuah expired posting masih carrying langsung markup mendapatkan disapproved. - Konfirmasi regional availability — Google untuk Jobs tidak tersedia di mana-mana.
- periksa Search Console’s rich-hasil report untuk spesifik disapproval alasan dan perbaiki terhadap itu named policy.
Bing dan JobPosting
Bing mendukung data terstruktur broadly — JSON-LD, Microdata, RDFa — dan menyediakan sebuah
Schema Markup Validator, dan ini lists JobPosting among didukung jenis untuk
careers-halaman dan job-board markup. tetapi Bing melakukan tidak publish sebuah JobPosting-spesifik
eligibility spec anywhere near sebagai detailed sebagai Google’s, dan -nya job-penelusuran surface memiliki
far lebih rendah terdokumentasi rigor. honest summary: Bing menggunakan yang sama schema.org
vocabulary dan yang sama single-job-per-halaman principle, dengan banyak lebih ringan validation
dan banyak thinner documentation. jangan assume Bing/Google parity di sini — mark up untuk
Google’s stricter spec dan Bing adalah covered oleh default.
Di mana ini sits
JobPosting adalah satu jenis di lebih luas data terstruktur hub ini artikel lives di bawah, alongside commerce-focused Product schema dan ProductGroup schema markup dan wider Commerce schema family. jika Anda’re implementing di seluruh sebuah situs, treat them yang sama cara: gunakan jenis itu maps untuk sebuah confirmed penelusuran fitur, pertahankan JSON-LD di parity dengan terlihat halaman konten, dan validate sebelum Anda ship.
AI summary
sebuah condensed take pada Advanced versi:
- Apa ini adalah: JobPosting schema (
schema.org/JobPosting, JSON-LD) pada sebuah single-job halaman membuat ini eligible untuk Google untuk Jobs, job-penelusuran rich hasil. - diperlukan (5):
title( role, tidak halaman judul),description(penuh HTML, tidak sebuah repeat dari judul),datePosted(ISO 8601),hiringOrganization( nyata employer),jobLocation( worksite). Fully remote peran substitutejobLocationType: TELECOMMUTE— tetapi Google memerlukan naming setidaknya satu eligible country melaluiapplicantLocationRequirements(preferred) atau sebuahjobLocationdefault untuk setiapTELECOMMUTEposting, restricted atau tidak. - Recommended (CTR/filter nilai):
validThrough(omit jika tidak pernah expires; pertahankan accurate jika ini melakukan),employmentType,baseSalary(employer-supplied, tidak estimated),identifier(dedup),directApply. - Beta:
educationRequirements,experienceRequirements,experienceInPlaceOfEducation— 2021 Career-Certificate-era additions; nice untuk memiliki, tidak eligibility. - Remote patterns:
TELECOMMUTEselalu perlu setidaknya satu eligible country (satu untuk sebuah restricted role, sebuah list untuk sebuah lebih luas satu) melaluiapplicantLocationRequirementsatau sebuahjobLocationdefault; hybrid menggunakan sebuah nyatajobLocationdan skipsTELECOMMUTEunless role adalah genuinely 100% remote — jangan di atas-claim ini untuk occasional WFH. - Dua hard aturan: satu job per halaman; konten-schema parity (setiap JSON-LD nilai terlihat pada halaman).
- konten policies (named): single-job-halaman, irrelevant konten, incomplete konten, misrepresentation, profanity, disguised ads, expired postings, jobs tanpa sebuah cara untuk apply, resume collection, job permintaan, payment diperlukan, editorial konten.
- Expiration — 3 sanctioned metode: past
validThrough; hapus halaman (404/410); strip markup. Leaving expired jobs langsung risks manual tindakan menghapus postings dari Google untuk Jobs (scoped untuk Anda listings, tidak seluruh situs); sebuah fake futurevalidThroughtidak help. - Region: Google untuk Jobs adalah di 50+ countries, tidak global.
- Syndication: sama job pada multiple situs/boards adalah fine (Google de-dups, per
Mueller);
hiringOrganizationaccuracy dan Tidak-misrepresentation masih apply. - pengindeksan API: scoped untuk JobPosting + BroadcastEvent-di-VideoObject hanya, now approval-gated; sebuah submission adalah sebuah notification, tidak sebuah jaminan dari crawling, pengindeksan, atau peringkat; misuse risks losing access. Cite Google’s quota-pricing halaman.
- Bing: sama vocabulary, single-job principle; banyak thinner docs dan lebih ringan validation — lean Google.
Dokumentasi resmi
Utama-sumber documentation dari mesin pencari.
- Job posting (JobPosting) data terstruktur untuk Job Penelusuran — diperlukan dan recommended properties, remote-job menangani, dan penuh konten-policy list.
- Requesting Approval dan Quota — pengindeksan API — approval-form dan quota model untuk pengindeksan API access.
- pengindeksan API Quickstart — status API adalah hanya untuk
JobPostingatauBroadcastEventembedded di sebuahVideoObject. - Rich hasil Test — validate sebuah JobPosting halaman’s eligibility dan diperlukan-property errors.
- Schema Markup Validator — validate schema.org syntax dari apa pun jenis.
- schema.org — JobPosting — vocabulary reference: setiap property jenis dapat carry.
Bing / Microsoft
- Bing Webmaster alat — Marking Up Anda situs dengan data terstruktur — Bing’s umum structured-data mendukung (JSON-LD, Microdata, RDFa).
- Bing Webmaster alat — Schema Markup Validator dan pemeriksaan URL.
Quotes dari sumber
pada—record statements dari Google’s documentation. setiap tautan adalah sebuah deep tautan itu jumps untuk quoted passage pada sumber halaman.
Google docs — diperlukan properties
- “The title of the job (not the title of the posting). For example, ‘Software Engineer’ or ‘Barista’.” (terjemahan) “ judul dari job (tidak judul dari posting). misalnya, ‘Software Engineer’ atau ‘Barista’.” — pada
title. Jump untuk quote - “The organization offering the job position. This must be the name of the company (for example, ‘Starbucks, Inc’).” (terjemahan) “ organization offering job position. ini harus menjadi name dari company (misalnya, ‘Starbucks, Inc’).” — pada
hiringOrganization. Jump untuk quote
Google docs — konten policies
- “The JobPosting markup must only be used on pages that contain a single job posting.” (terjemahan) “ JobPosting markup harus hanya menjadi digunakan pada halaman itu berisi sebuah single job posting.” Jump untuk quote
- “Ideally you should remove expired job postings from your website.” (terjemahan) “Ideally Anda harus hapus expired job postings dari Anda situs web.” Jump untuk quote
Paraphrased — sourced secondhand, tidak quoted verbatim
«- On syndication (John Mueller, Feb 2022 Hangout, via iloveseo.com): having the same job posted on different websites is very common and fine, and hosting it at different times or on different subdomains should be fine too; Google de-duplicates identical listings, and the same applies to Google for Jobs. (Paraphrase — confirm against the original before quoting.)
- On the beta properties (Google, via Search Engine Journal, March 2021): because Google was still developing how it uses the education/experience information, you might not see any appearance or effect in Google Search right away. (Paraphrase — confirm against the live docs before quoting.)
- On Indexing API misuse (Google reps, ~2025, via secondary aggregation): the recommendation is to stick to the documented, supported use cases rather than pushing arbitrary page types through the Indexing API. (Paraphrase — re-fetch the primary source for exact wording, date, and platform before quoting directly.) » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian sembilan puluh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Interactive decision aids
Dua branching pertanyaan itu come up constantly dengan job markup. Click melalui them.
seharusnya ini job gunakan jobLocationType: TELECOMMUTE?
sebuah job hanya closed — bagaimana melakukan I hapus ini correctly?
Runbook: my job posting mendapat disapproved — apa untuk periksa, di order
berfungsi ini top untuk bottom. sebagian besar disapprovals resolve di langkah 2 atau 3.
-
Reproduce ini di Rich hasil Test. Paste langsung URL (atau dirender HTML) ke Rich hasil Test. jika diperlukan properties adalah missing atau malformed, perbaiki itu pertama — sebuah diperlukan-property error alone membuat halaman ineligible.
-
Konfirmasi ini adalah satu job per halaman. ini adalah paling umum disapproval. JobPosting markup pada sebuah listing halaman, category halaman, atau penelusuran-hasil halaman adalah tidak diizinkan. markup harus langsung pada sebuah halaman containing sebuah single job.
-
periksa konten-schema parity. Baca halaman sebagai sebuah human. setiap nilai di JSON-LD — salary, employment jenis, remote status, location — harus menjadi visibly present di halaman konten. sebuah salary atau “remote” (terjemahan) “remote” flag di markup itu tidak pada halaman membaca sebagai misrepresentation.
-
periksa
validThroughdan expiry. jika role adalah filled atau closed, sebuah expired posting masih carrying langsung markup mendapatkan disapproved. Apply satu dari three removal metode (pastvalidThrough, 404/410, atau strip markup). jangan set sebuah fake future date. -
Konfirmasi ada sebuah cara untuk apply. setiap posting perlu sebuah apply metode (career-fair invites dan login-gated postings adalah terdokumentasi exceptions). Tidak apply path adalah sebuah named policy violation.
-
Scan lainnya named policies. aturan out irrelevant/incomplete konten, misrepresentation (fake jobs, salah location, keyword stuffing), profanity, disguised ads/affiliate konten, resume-collection pada non-open peran, job permintaan, payment-diperlukan, dan semua-caps/editorial issues.
-
Konfirmasi regional availability. Google untuk Jobs adalah di 50+ countries tetapi tidak global. Perfect markup di sebuah unsupported country masih tidak akan surface.
-
Baca tepat alasan di Search Console dan perbaiki terhadap ini. Open rich-hasil report, temukan spesifik disapproval alasan string, dan remediate terhadap itu named policy alih-alih guessing.
Myths dan mistakes
recurring cara job markup goes wrong — dan apa sebenarnya benar.
-
Myth: “You must include every property or Google won’t show the job.” (terjemahan) “Anda harus sertakan setiap property atau Google tidak akan tampilkan job.” salah. hanya five properties adalah strictly diperlukan. Recommended dan beta properties meningkatkan richness dan filtering, tetapi mereka jangan gate eligibility.
-
Myth: “Posting the same job on multiple sites/subdomains gets you a duplicate-content penalty.” (terjemahan) “Posting yang sama job pada multiple situs/subdomains mendapatkan Anda sebuah duplicate-konten penalty.” Tidak. Wajar syndication di seluruh job boards adalah yang diharapkan — Google de-duplicates identical listings alih-alih penalizing them.
hiringOrganizationaccuracy dan Tidak-misrepresentation masih apply. -
Myth: “Setting
validThroughdi itu future menjaga a filled listing ‘safe.’” (terjemahan) “Setting tidak terdefinisi di future mempertahankan sebuah filled listing ‘safe.’” salah. Google disallows expired-di-practice postings regardless dari apavalidThroughsays. halaman harus reflect reality. -
Myth: “JobPosting schema guarantees a ranking or traffic boost.” (terjemahan) “JobPosting schema jaminan sebuah peringkat atau traffic boost.” Overstated. ini membuat Anda eligible untuk Google untuk Jobs UI — ini adalah tidak sebuah peringkat factor untuk organic web hasil. apa pun CTR gains come dari richer, filterable UI, tidak dari sebuah algorithmic peringkat preference.
-
Myth: “You can put JobPosting markup on your careers/listing page to cover all open roles at once.” (terjemahan) “Anda dapat put JobPosting markup pada Anda careers/listing halaman untuk cover semua open peran di setelah.” Explicitly banned. Satu job posting per halaman, penuh berhenti.
-
Myth: “The Indexing API is a general ‘get indexed faster’ tool for any page.” (terjemahan) “ pengindeksan API adalah sebuah umum ‘mendapatkan terindeks lebih cepat’ alat untuk apa pun halaman.” salah, dan reps memiliki warned terhadap ini. ini adalah scoped untuk JobPosting dan BroadcastEvent-di-VideoObject hanya, dan misuse risks losing access.
-
Myth: “Remote jobs don’t need any location field at all.” (terjemahan) “Remote jobs jangan perlu apa pun location field di semua.” salah.
jobLocationType: TELECOMMUTEreplaces perlu untuk sebuah spesifik officejobLocation, tetapi Google masih memerlukan setidaknya satu eligible country — melaluiapplicantLocationRequirements(preferred) atau sebuah default taken darijobLocation— pada setiapTELECOMMUTEposting. ada Tidak valid case di mana sebuah remote job carries zero location informasi. -
Mistake: marking occasional-WFH atau hybrid peran sebagai
TELECOMMUTE.TELECOMMUTEadalah untuk 100%-remote berfungsi. di atas-claiming ini terhadap sebuah halaman itu mendeskripsikan sebuah hybrid role adalah sebuah konten mismatch itu risks disapproval.
SOP: expired-job hygiene
artikel adalah jelas itu ini tidak sebuah satu-time setup: expired-job hygiene adalah “an ongoing obligation,” (terjemahan) “sebuah ongoing obligation,” dan Google berjalan three sanctioned removal metode Anda perlu sebuah repeatable proses untuk — ideally triggered oleh sebuah cron job, sebuah ATS integration, atau sebuah pengindeksan API panggil moment sebuah role closes, tidak sebuah manual sweep Anda remember untuk melakukan occasionally.
-
Trigger: sebuah role closes atau fills di Anda ATS. tindakan: di dalam yang sama business day, apply satu dari three sanctioned metode — set
validThroughuntuk sebuah past date (dan leave halaman up hanya briefly), hapus halaman dan mengembalikan404/410, atau strip JobPosting markup sementara mempertahankan halaman langsung. Selesai ketika: halaman Tidak lebih lama carries langsung, saat ini JobPosting markup untuk sebuah filled role. -
tidak pernah set sebuah future
validThroughpada sebuah closed role untuk “keep it safe.” (terjemahan) “pertahankan ini safe.” tindakan: jika sebuah role adalah filled, perbaiki adalah satu dari three removal metode di atas — tidak sebuah fake future date. Selesai ketika:validThrough(jika present) reflects reality, tidak sebuah placeholder. -
Jalankan sebuah scheduled reconciliation sweep (weekly adalah reasonable untuk moderate posting volume) cross-memeriksa setiap langsung JobPosting halaman terhadap Anda ATS’s saat ini status. ini catches postings itu slipped melalui langkah 1 — sebuah halaman itu seharusnya memiliki telah pulled tetapi tidak. Selesai ketika: count dari “closed di ATS tetapi masih aktif dengan markup” (terjemahan) “closed di ATS tetapi masih langsung dengan markup” halaman adalah zero.
-
untuk tinggi-volume job boards, gunakan pengindeksan API untuk removal event itself (ini adalah satu dari hanya dua terdokumentasi gunakan cases, alongside
BroadcastEvent), rather daripada menunggu pada sebuah wajar re-crawl. Selesai ketika: removal atauvalidThroughperbarui adalah reflected di Google’s processing tanpa sebuah multi-day crawl delay. -
Log yang removal metode adalah digunakan dan ketika, per posting. ini adalah cheap insurance: jika sebuah manual tindakan review ever happens, Anda ingin sebuah record menunjukkan expired-job hygiene adalah sebuah functioning proses, tidak sebuah afterthought.
Prompts: konten-schema parity audit
artikel’s melalui-line adalah itu konten-schema parity adalah non-negotiable — setiap nilai di JobPosting JSON-LD (salary, remote status, employment jenis) memiliki untuk menjadi visibly present pada halaman, atau Google dapat treat mismatch sebagai misrepresentation. ini prompts turn itu periksa ke sesuatu Anda dapat paste ke sebuah chat model rather daripada eyeball manually.
Prompt 1 — flag parity mismatches antara halaman dan markup
Paste di: job halaman’s terlihat, human-readable text (copy dirender halaman konten) dan -nya JobPosting JSON-LD block, labeled secara terpisah.
Here is the visible text of a job posting page, followed by its JobPosting
JSON-LD structured data.
VISIBLE PAGE TEXT:
<paste the rendered, human-readable job description and any salary/location/
remote-work text here>
JSON-LD:
<paste the JobPosting JSON-LD block here>
Compare them field by field for baseSalary, employmentType, jobLocation /
jobLocationType, and validThrough. For each field, tell me:
1. Whether the value in the JSON-LD is stated anywhere in the visible text.
2. If it's missing or contradicted on the page, quote the JSON-LD value and
explain what's missing.
Do not flag a mismatch unless you can point to what's absent or contradictory —
don't guess at intent.Expect back: sebuah pendek field-oleh-field table (atau list) naming setiap recommended field dan apakah halaman backs ini up, plus tepat JSON-LD nilai itu memiliki Tidak terlihat padanan jika satu ada.
Prompt 2 — periksa untuk sebuah TELECOMMUTE / remote-berfungsi mismatch
Paste di: job’s terlihat deskripsi (secara khusus apa pun language tentang
remote/hybrid/pada-situs berfungsi) dan jobLocationType / applicantLocationRequirements
nilai dari JSON-LD.
Here is a job posting's description text describing the work arrangement, and
the jobLocationType / applicantLocationRequirements values from its JobPosting
JSON-LD.
DESCRIPTION TEXT (work-arrangement language only):
<paste the sentence(s) describing remote/hybrid/on-site expectations>
JSON-LD VALUES:
jobLocationType: <value, or "not set">
applicantLocationRequirements: <value, or "not set">
TELECOMMUTE is only correct for roles the employee may or must work 100% remotely.
Based on the description text, does the jobLocationType value match how the role
is actually described? Call out specifically if the text describes a hybrid or
occasional-work-from-home role while the markup claims TELECOMMUTE, or vice versa.Expect back: sebuah plain Ya/Tidak pada apakah markup dan deskripsi agree, dan jika tidak, yang satu ( halaman copy atau JSON-LD) perlu untuk perubahan untuk restore parity.
alat untuk JobPosting validation
Rich-hasil Eligibility Checker — ini adalah
alat untuk reach untuk pertama. Paste sebuah job halaman’s JSON-LD, -nya penuh HTML, atau sebuah langsung
URL, dan ini memeriksa JobPosting jenis secara khusus sebagai satu dari -nya tracked rich-hasil
fitur: sebuah per-property breakdown dari ✓ eligible, ✗ tepat missing diperlukan field
(title, description, datePosted, hiringOrganization, jobLocation), dan ⚠
untuk missing recommended fields (validThrough, employmentType, baseSalary).
Jalankan ini sebelum Anda ship sebuah baru posting template, dan again apa pun time sebuah disapproval
menampilkan up di Search Console — ini tells Anda di seconds apakah masalah adalah sebuah
missing diperlukan property atau sesuatu alat dapat’t see (like konten-schema
parity, yang perlu sebuah human baca dari halaman).
Schema Markup Validator — gunakan ini untuk syntax
layer underneath eligibility: severity-tiered validation dari JSON-LD itself
(malformed JSON, wrong @type nesting, @id graph issues), plus sebuah corrected,
copy-pasteable JSON-LD block. Reach untuk ini ketika Rich-hasil Eligibility Checker
flags sebuah property sebagai missing tetapi Anda’re tidak sure apakah nilai adalah sebenarnya
absent atau hanya malformed cukup itu parser dapat’t see ini.
antara dua: jalankan Rich-hasil Eligibility Checker untuk job-posting-spesifik eligibility pertanyaan (“akan ini qualify untuk Google untuk Jobs” (terjemahan) “akan ini qualify untuk Google untuk Jobs”), dan Schema Markup Validator ketika Anda perlu debug mentah JSON-LD syntax underneath ini.
Standing KPIs untuk JobPosting health
ini adalah ongoing angka worth tracking quarter di atas quarter — tidak sebuah satu-time launch periksa, tetapi apakah Anda JobPosting implementation tetap healthy sebagai postings come dan go.
Google untuk Jobs impressions dan clicks
- Apa ini tells Anda: apakah Anda postings adalah sebenarnya surfacing di Google untuk Jobs rich-hasil surface dan getting clicked, sebagai opposed untuk hanya menjadi technically eligible.
- cara pull ini: Search Console’s job-posting rich-hasil report (di bawah Enhancements), yang breaks out impressions dan clicks secara khusus untuk halaman carrying valid JobPosting markup.
- Benchmark / realistic range: ada Tidak universal angka di sini — ini bergantung heavily pada Anda posting volume, vertical, dan bagaimana competitive “Google for Jobs” (terjemahan) “Google untuk Jobs” adalah untuk Anda peran. Establish Anda own baseline di atas Anda pertama sedikit reporting cycles alih-alih comparing untuk sebuah industry figure.
- Cadence: weekly selama active hiring cycles; monthly adalah cukup ketika posting volume adalah rendah.
Rolling disapproval rate
- Apa ini tells Anda: apakah Anda ongoing hygiene proses — konten-schema parity, satu-job-per-halaman, expired-job removal — adalah sebenarnya holding up di atas time, alih-alih sebuah single poin-di-time compliance periksa.
- cara pull ini: valid/tidak valid/disapproved breakdown di Search Console’s job-posting rich-hasil report, tracked sebagai sebuah percentage dari Anda total langsung postings setiap period.
- Benchmark / realistic range: Tidak industry-published baseline ada untuk ini; honest target adalah trending toward zero disapproved postings di atas time. Track Anda own trend alih-alih sebuah borrowed angka.
- Cadence: monthly, atau aligned untuk whatever cadence Anda jalankan expired-job reconciliation sweep described di SOPs tab.
Time-untuk-removal lag
- Apa ini tells Anda: apakah Anda removal pipeline (cron job, ATS integration, atau pengindeksan API panggil) adalah sebenarnya mempertahankan pace dengan dunia nyata job closures — ini adalah root-penyebab metric behind keduanya dari KPIs di atas, since disapprovals dan missed impressions keduanya trace back untuk stale postings staying langsung too panjang.
- cara pull ini: bandingkan Anda ATS’s “closed” (terjemahan) “closed” timestamp untuk sebuah role terhadap timestamp satu dari three sanctioned removal metode adalah sebenarnya applied untuk itu halaman — sebuah internal ops log, tidak sebuah Search Console report.
- Benchmark / realistic range: artikel’s own steer adalah “itu moment it closes,” (terjemahan) “ moment ini closes,” tetapi ada Tidak universal SLA untuk cite — set Anda own target berdasarkan bagaimana fast Anda ATS integration atau cron cadence dapat realistically jalankan, dan mengukur terhadap itu.
- Cadence: reviewed per closure event di mana mungkin, atau pada sebuah rolling weekly basis jika closures adalah batched.
Uji pemahaman Anda: JobPosting Schema
Five quick pertanyaan pada JobPosting data terstruktur, Google untuk Jobs eligibility, dan policies itu mendapatkan listings disapproved. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
I jangan memiliki sebuah dedicated artikel pada JobPosting schema atau Google untuk Jobs — ini adalah baru ground untuk me alih-alih sebuah topic I’ve ditulis up sebelum, so I’m tidak going untuk manufacture sebuah citation. Apa carries di atas adalah my umum schema stance: implement markup ketika ini earns Anda sebuah nyata penelusuran fitur, pertahankan ini di parity dengan apa terlihat pada halaman, dan validate sebelum Anda ship. JobPosting clears itu bar, yang adalah mengapa ini adalah worth melakukan precisely.
My related schema writing (umum, tidak job-spesifik)
- Schema Markup untuk AI — entity-infrastructure angle pada schema (sebuah berbeda pertanyaan dari rich-hasil eligibility).
- Beginner’s Guide untuk SEO teknis — di mana schema fits di bigger picture.
- SEO perusahaan — my pragmatis take: “I’m a fan dari schema markup sebagai long sebagai it mendapatkan Anda a penelusuran feature.” (terjemahan) “I’m sebuah fan dari schema markup sebagai panjang sebagai ini mendapatkan Anda sebuah penelusuran fitur.”
dari sekitar industry
- John Mueller Discusses Apa untuk melakukan dengan Multiple Job Posting Schema Markup (iloveseo.com) — recap dari February 2022 Hangout pada duplicate/syndicated postings dan Google-side de-duplication.
- Google Launches Job Postings Schema untuk Job Penelusuran Inclusion (mesin pencari Roundtable) — Barry Schwartz’s June 2017 launch coverage.
- baru Job Posting data terstruktur Requirements (mesin pencari Journal) — Roger Montti pada March 2021 beta education/experience properties dan mereka Career-Certificate origin.
- Google Jobs Shake-Up 2025: Navigating baru pengindeksan API Restrictions (dstribute.io) — industry timeline pada pengindeksan API access perubahan (treat dates sebagai industry-sourced, tidak Google-confirmed).
- Major memperbarui untuk pengindeksan API — impact pada Job Boards dan aggregators (alexanderchukovski.com) — job-board-focused analysis dari yang sama shift.
Log perubahan
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.