Panduan JobPosting Schema
cara implement JobPosting data terstruktur untuk appear di Google untuk Jobs — five diperlukan properties, recommended fields itu actually drive clicks, remote-job markup, konten policies itu get postings disapproved, dan cara hapus expired jobs correctly.
Bahasa
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 where click-melalui dan filtering nilai lives. konten-schema parity adalah non-negotiable: everything di JSON-LD harus menjadi terlihat pada halaman. paling umum disapproval cause adalah putting markup pada sebuah listing halaman alih-alih one job per halaman. Expired-job hygiene adalah sebuah ongoing obligation, not sebuah one-time setup — leave dead jobs live dan Anda risk sebuah manual tindakan. dan Google's pengindeksan API adalah scoped untuk JobPosting dan BroadcastEvent hanya; misusing ini sebagai sebuah umum 'indeks faster' button dapat cost Anda access. Bing mendukung yang sama vocabulary tetapi documents ini far more lightly — lean Google.
TL;DR — JobPosting schema adalah code Anda tambahkan untuk sebuah job-listing halaman itu labels role — “this is the 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 where ini adalah based” — so Google dapat put ini di Google untuk Jobs, job-search 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 one job per halaman — tidak pernah sebuah halaman itu lists lots dari jobs di once.
What JobPosting schema adalah
When Anda post sebuah job pada Anda careers halaman, sebuah person dapat read judul, company, pay, dan where ini adalah based. sebuah mesin pencari sees plain text dan memiliki untuk guess. JobPosting schema spells ini out di code, menggunakan shared vocabulary dari schema.org, so Google dapat memahami listing dan tampilkan ini di Google untuk Jobs — little job-search widget dengan company logos itu appears di top dari hasil untuk searches like “marketing jobs near me.” (terjemahan) “marketing jobs near me.”
Evidence for this claim Schema.org JobPosting describes a job vacancy and properties such as title, datePosted, hiringOrganization, and jobLocation. Scope: Schema.org vocabulary; Google applies additional job-search requirements. Confidence: high · Verified: Schema.org: JobPostingini adalah written di sebuah kecil block dari code called JSON-LD itu sits di halaman tanpa mengubah how halaman looks.
What Google perlu di minimum
untuk menjadi eligible untuk Google untuk Jobs, five things adalah diperlukan:
- judul — job’s judul, like “Barista” (terjemahan) “Barista” atau “Software Engineer” (terjemahan) “Software Engineer” (not judul dari halaman web).
- deskripsi — full job deskripsi.
- datePosted — date Anda posted job.
- hiringOrganization — company’s nyata name.
- jobLocation — where person akan actually berfungsi.
There’s one exception untuk location aturan: jika job adalah 100% remote, Anda flag ini sebagai remote alih-alih giving sebuah office address (more pada itu di Advanced).
Evidence for this claim Google requires JobPosting markup on a single job detail page with required job and organization information. Scope: Google Search JobPosting requirements; listing pages and incomplete postings are not eligible. Confidence: high · Verified: Google: JobPosting structured datadetail itu get Anda clicked
five diperlukan fields get Anda di. sebuah few optional ones get Anda noticed, because Google untuk Jobs lets people filter oleh them:
- salary — showing pay membuat Anda listing stand out (dan salary-disclosure laws adalah spreading, so periksa apakah Anda jurisdiction memerlukan ini).
- employment jenis — full-time, bagian-time, contract, dan so pada.
- sebuah expiry date — so Google knows when job closes.
thing sebagian besar people get wrong
One job per halaman. Anda dapat’t put JobPosting markup pada sebuah halaman itu lists semua Anda open roles di once — Google hanya allows ini pada sebuah halaman untuk sebuah single job. ini adalah angka-one alasan listings get rejected.
dan when sebuah job adalah filled, take ini down atau mark ini closed. Leaving expired jobs live adalah terhadap Google’s aturan — Google says ini dapat take manual tindakan dan pull posting dari Google untuk Jobs experience, which adalah scoped untuk Anda job listings, not sebuah blanket penalty pada rest dari Anda situs’s search rankings. Setting sebuah fake future expiry date untuk pertahankan sebuah filled job “alive” (terjemahan) “alive” doesn’t berfungsi — halaman memiliki untuk reflect reality.
ingin full versi — exact diperlukan dan recommended properties, cara mark up remote dan hybrid roles, konten policies itu get postings disapproved, how untuk hapus expired jobs right cara, dan how Bing differs? Switch untuk Advanced tab.
Evidence for this claim Google documents jobLocationType TELECOMMUTE and applicantLocationRequirements for fully remote jobs. Scope: Google Search JobPosting remote-job requirements; hybrid roles should not be marked as fully remote. Confidence: high · Verified: 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 roles. recommended set (validThrough,employmentType,baseSalary,identifier,directApply) adalah where CTR dan filtering nilai lives. Two hard aturan: one 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 live risks sebuah manual tindakan. Google’s pengindeksan API adalah scoped untuk JobPosting dan BroadcastEvent hanya dan adalah now approval-gated — don’t treat ini sebagai sebuah umum “index faster” (terjemahan) “indeks faster” button. Bing mendukung yang sama vocabulary tetapi documents ini far more 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 search fitur. JobPosting clears itu bar cleanly — ini adalah gate untuk Google untuk Jobs, sebuah genuine SERP surface — so ini adalah worth doing, dan worth doing precisely. precision adalah whole game here, because job listings adalah one dari more heavily policed structured-data jenis Google runs.
five diperlukan properties
Google’s job-posting structured-data documentation lists five diperlukan properties. Miss apa pun one dan halaman isn’t eligible:
title— “The title of the job (not the title of the posting). For example, ‘Software Engineer’ or ‘Barista’.” (terjemahan) “ judul dari job (not judul dari posting). misalnya, ‘Software Engineer’ atau ‘Barista’.” (jump untuk quote) ini trips people up constantly — nilai adalah role, not Anda halaman’s<h1>atau SEO judul.description— full HTML job deskripsi. ini harus not hanya repeat judul; Google ingin nyata, complete deskripsi.datePosted— original date employer posted job, di ISO 8601 (e.g.,2017-01-24).hiringOrganization— “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’).” (jump untuk quote) untuk sebuah job board ini harus menjadi nyata employer, not board.jobLocation— physical worksite where employee akan report, not place job adalah posted. Not 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 actually move needle
Eligibility comes dari diperlukan five, tetapi CTR dan filtering nilai comes almost entirely dari recommended set — ini adalah fields Google untuk Jobs lets searchers filter pada:
validThrough— date posting expires, di ISO 8601. There’s 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, not sebuah harmless default.employmentType—FULL_TIME,PART_TIME,CONTRACTOR,TEMPORARY,INTERN,VOLUNTEER,PER_DIEM, atauOTHER(sebuah array adalah allowed).baseSalary(sebuahMonetaryAmount) — actual base salary disediakan oleh employer, not sebuah estimate; hanya employer dapat supply ini. gunakanunitTextdariHOUR/DAY/WEEK/MONTH/YEAR, danminValue/maxValueuntuk sebuah range. dengan pay-transparency laws spreading, ini adalah increasingly not optional dalam praktik.identifier(sebuahPropertyValue) — employer’s unique job/req ID; penting untuk de-duplication, terutama pada aggregators.directApply— indicates whether posting’s URL lets someone apply directly pada itu situs alih-alih redirecting 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 because ini adalah masih developing how
ini menggunakan informasi, Anda mungkin not 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 don’t hold up sebuah launch untuk them — mereka’re future-proofing, not eligibility.
Remote dan hybrid jobs: TELECOMMUTE done 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 which
employee dapat atau harus berfungsi remotely 100% dari time. Google memerlukan setiap
TELECOMMUTE posting untuk specify setidaknya one eligible country — via
applicantLocationRequirements (Google’s preferred metode) atau, failing itu, sebuah
default taken dari jobLocation. There’s no valid scenario where sebuah remote job
carries zero location informasi: “unrestricted” (terjemahan) “unrestricted” dalam praktik berarti listing setiap
country Anda’ll accept applicants dari, not omitting field. pada-halaman
deskripsi harus clearly say role adalah fully remote too — konten-schema parity
applies here sebagai much sebagai anywhere.
{
"@type": "JobPosting",
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": {
"@type": "Country",
"name": "USA"
}
}itu contoh adalah sebuah US-hanya remote role. untuk “remote within the EU” (terjemahan) “remote di dalam EU” atau apa pun
multi-country role, repeat applicantLocationRequirements untuk setiap eligible
country — property name adalah yang sama whether Anda’re naming one country atau ten.
Hybrid. sebuah hybrid role adalah not fully remote. Give 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 when remote option adalah itself
geography-restricted). mistake untuk hindari: marking sebuah occasional-berfungsi-dari-home
role sebagai TELECOMMUTE. itu’s sebuah konten mismatch waiting untuk happen — TELECOMMUTE
adalah untuk 100%-remote berfungsi, dan halaman memiliki untuk back itu up. When di doubt,
Decision Trees tab memiliki sebuah “should this use TELECOMMUTE?” (terjemahan) “seharusnya ini gunakan TELECOMMUTE?” walkthrough.
Google untuk Jobs eligibility dan regional availability
One surprise untuk international teams: Google untuk Jobs isn’t global. ini adalah live di 50+ countries di seluruh North America, Latin America, Europe, Middle East dan North Africa, Sub-Saharan Africa, dan Asia — tetapi not everywhere. jika Anda listings adalah technically perfect dan masih not showing, periksa bahwa experience adalah available di Anda target country sebelum Anda spend sebuah day debugging Anda JSON-LD.
konten policies itu get 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 because Search Console akan cite them. dari Google’s documentation:
- Single-job halaman hanya. “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) ini adalah single sebagian besar umum dunia nyata disapproval — no markup pada listing/search-hasil halaman.
- Irrelevant konten — posting’s konten harus menjadi relevant untuk job.
- Incomplete konten — Google doesn’t allow job postings dengan incomplete job deskripsi.
- Misrepresentation — no fake jobs, keyword stuffing, salah location data, impersonation, atau posting someone else’s listing without authorization.
- Profanity — no obscene, profane, atau offensive language.
- Disguised ads / promotional konten — no affiliate-program listings atau lainnya promotional konten dressed up sebagai sebuah job.
- Expired postings — Google doesn’t allow expired job postings. “Ideally you should remove expired job postings from your website.” (terjemahan) “Ideally Anda seharusnya hapus expired job postings dari Anda situs web.” (jump untuk quote)
- Jobs without 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 actual openings, not solicitations dari people seeking berfungsi.
- Payment diperlukan — tidak pernah memerlukan sebuah applicant untuk pay.
- Editorial konten — proper grammar dan capitalization; no 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.
Handling expiration dan removal correctly
ini adalah bagian teams di bawah-bangun. Expired-job hygiene adalah sebuah ongoing obligation, not sebuah one-time setup task — Anda perlu sebuah process (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 live violates konten policies,
dan Google says respons dapat sertakan manual tindakan itu menghapus job
posting(s) dari job search experience pada Google — itu’s scoped untuk Anda job
listings’ eligibility untuk Jobs fitur, not sebuah automatic penalty terhadap rest
dari Anda situs’s organic rankings. Evidence for this claim Google requires expired job postings to be removed or marked with a past validThrough value and no longer exposed as active jobs. Scope: Google Search JobPosting expiration policy; stale postings can trigger manual actions. Confidence: high · Verified: Google: JobPosting structured data Setting sebuah future
validThrough pada sebuah job itu’s actually filled melakukan not pertahankan ini “safe” (terjemahan) “safe” — halaman
harus reflect reality.
untuk faster removal dan updates pada job URLs specifically, Google recommends -nya pengindeksan API di atas waiting untuk sebuah normal re-crawl atau sebuah sitemap ping — see next bagian untuk scope 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 said itu having yang sama job posted pada berbeda situs web adalah very umum dan expected, 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 above adalah paraphrased dari sebuah February 2022 Google Hangout sebagai recapped oleh iloveseo.com; I’m summarizing alih-alih quoting because I sourced ini melalui itu secondary recap. What masih applies regardless:hiringOrganization
harus menjadi nyata employer, dan no misrepresentation.pengindeksan API adalah scoped — dan now gated
Google’s pengindeksan API adalah not sebuah umum “get indexed faster” (terjemahan) “get terindeks faster” 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 one dari hanya two
legitimate gunakan cases. Submitting sebuah URL adalah sebuah notification, not sebuah guarantee: ini
doesn’t guarantee itu Google akan crawl, indeks, sertakan, peringkat, atau display halaman
pada apa pun particular timeline.
Two things memiliki changed landscape here:
- Access adalah now approval-gated. default per-day quota adalah modest, dan getting meaningful volume now memerlukan filling out sebuah Google approval form alih-alih menjadi auto-enabled. Cite Google’s own Requesting Approval dan Quota halaman sebagai primary source 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 documented, didukung gunakan cases. Because JobPosting adalah one dari hanya two dari itu, ini penting directly: abuse API untuk non-job konten dan Anda risk losing access untuk sebuah channel Anda job listings actually depend pada.
Troubleshooting di Search Console
When sebuah listing doesn’t tampilkan, berfungsi ini di order — Playbooks tab lays ini out sebagai sebuah linear runbook, tetapi pendek versi:
- Validate markup dengan Rich hasil Test dan confirm semua five diperlukan properties parse without error.
- Confirm one 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 live markup gets disapproved. - Confirm regional availability — Google untuk Jobs isn’t available everywhere.
- periksa Search Console’s rich-hasil report untuk spesifik disapproval alasan dan fix 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 not publish sebuah JobPosting-spesifik
eligibility spec anywhere near sebagai detailed sebagai Google’s, dan -nya job-search surface memiliki
far lower documented rigor. honest summary: Bing menggunakan yang sama schema.org
vocabulary dan yang sama single-job-per-halaman principle, dengan much lighter validation
dan much thinner documentation. Don’t assume Bing/Google parity here — mark up untuk
Google’s stricter spec dan Bing adalah covered oleh default.
Where ini sits
JobPosting adalah one jenis di broader 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 search fitur, pertahankan JSON-LD di parity dengan terlihat halaman konten, dan validate sebelum Anda ship.
AI summary
sebuah condensed take pada Advanced versi:
- What ini adalah: JobPosting schema (
schema.org/JobPosting, JSON-LD) pada sebuah single-job halaman membuat ini eligible untuk Google untuk Jobs, job-search rich hasil. - diperlukan (5):
title( role, not halaman judul),description(full HTML, not sebuah repeat dari judul),datePosted(ISO 8601),hiringOrganization( nyata employer),jobLocation( worksite). Fully remote roles substitutejobLocationType: TELECOMMUTE— tetapi Google memerlukan naming setidaknya one eligible country viaapplicantLocationRequirements(preferred) atau sebuahjobLocationdefault untuk setiapTELECOMMUTEposting, restricted atau not. - Recommended (CTR/filter nilai):
validThrough(omit jika tidak pernah expires; pertahankan accurate jika ini melakukan),employmentType,baseSalary(employer-supplied, not estimated),identifier(dedup),directApply. - Beta:
educationRequirements,experienceRequirements,experienceInPlaceOfEducation— 2021 Career-Certificate-era additions; nice untuk memiliki, not eligibility. - Remote patterns:
TELECOMMUTEselalu perlu setidaknya one eligible country (one untuk sebuah restricted role, sebuah list untuk sebuah broader one) viaapplicantLocationRequirementsatau sebuahjobLocationdefault; hybrid menggunakan sebuah nyatajobLocationdan skipsTELECOMMUTEunless role adalah genuinely 100% remote — don’t di atas-claim ini untuk occasional WFH. - Two hard aturan: one 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 without 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 live risks manual tindakan menghapus postings dari Google untuk Jobs (scoped untuk Anda listings, not whole situs); sebuah fake futurevalidThroughdoesn’t help. - Region: Google untuk Jobs adalah di 50+ countries, not global.
- Syndication: sama job pada multiple situs/boards adalah fine (Google de-dups, per
Mueller);
hiringOrganizationaccuracy dan no-misrepresentation masih apply. - pengindeksan API: scoped untuk JobPosting + BroadcastEvent-di-VideoObject hanya, now approval-gated; sebuah submission adalah sebuah notification, not sebuah guarantee dari crawling, pengindeksan, atau peringkat; misuse risks losing access. Cite Google’s quota-pricing halaman.
- Bing: sama vocabulary, single-job principle; much thinner docs dan lighter validation — lean Google.
Official documentation
Primary-source documentation dari mesin pencari.
- Job posting (JobPosting) data terstruktur untuk Job Search — diperlukan dan recommended properties, remote-job handling, dan full konten-policy list.
- Requesting Approval dan Quota — pengindeksan API — approval-form dan quota model untuk pengindeksan API access.
- pengindeksan API Quickstart — states 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 source
pada—record statements dari Google’s documentation. setiap tautan adalah sebuah deep tautan itu jumps untuk quoted passage pada source 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 (not 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, not quoted verbatim
- pada syndication (John Mueller, Feb 2022 Hangout, via iloveseo.com): having sama job posted pada berbeda situs web adalah very umum dan fine, dan hosting ini di berbeda times atau pada berbeda subdomains seharusnya menjadi fine too; Google de-duplicates identical listings, dan yang sama applies untuk Google untuk Jobs. (Paraphrase — confirm terhadap original sebelum quoting.)
- pada beta properties (Google, via mesin pencari Journal, March 2021): because Google adalah masih developing how ini menggunakan education/experience informasi, Anda mungkin not see apa pun appearance atau effect di Google Search right away. (Paraphrase — confirm terhadap live docs sebelum quoting.)
- pada pengindeksan API misuse (Google reps, ~2025, via secondary aggregation): recommendation adalah untuk stick untuk documented, didukung gunakan cases alih-alih pushing arbitrary halaman jenis melalui pengindeksan API. (Paraphrase — re-fetch primary source untuk exact wording, date, dan platform sebelum quoting directly.)
Interactive decision aids
Two branching pertanyaan itu come up constantly dengan job markup. Click melalui them.
Should this job use jobLocationType: TELECOMMUTE?
A job just closed — how do I remove it correctly?
Runbook: my job posting got disapproved — what 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 live URL (atau rendered HTML) ke Rich hasil Test. jika diperlukan properties adalah missing atau malformed, fix itu pertama — sebuah diperlukan-property error alone membuat halaman ineligible.
-
Confirm ini adalah one job per halaman. ini adalah paling umum disapproval. JobPosting markup pada sebuah listing halaman, category halaman, atau search-hasil halaman adalah not allowed. markup harus live pada sebuah halaman containing sebuah single job.
-
periksa konten-schema parity. Read 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 isn’t pada halaman reads sebagai misrepresentation.
-
periksa
validThroughdan expiry. jika role adalah filled atau closed, sebuah expired posting masih carrying live markup gets disapproved. Apply one dari three removal metode (pastvalidThrough, 404/410, atau strip markup). Don’t set sebuah fake future date. -
Confirm there’s sebuah cara untuk apply. setiap posting perlu sebuah apply metode (career-fair invites dan login-gated postings adalah documented exceptions). No 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 roles, job permintaan, payment-diperlukan, dan semua-caps/editorial issues.
-
Confirm regional availability. Google untuk Jobs adalah di 50+ countries tetapi isn’t global. Perfect markup di sebuah unsupported country masih won’t surface.
-
Read exact alasan di Search Console dan fix 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 what’s actually benar.
-
Myth: “You must include every property or Google won’t show the job.” (terjemahan) “Anda harus sertakan setiap property atau Google won’t tampilkan job.” salah. hanya five properties adalah strictly diperlukan. Recommended dan beta properties meningkatkan richness dan filtering, tetapi mereka don’t 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 gets Anda sebuah duplicate-konten penalty.” No. Normal syndication di seluruh job boards adalah expected — Google de-duplicates identical listings alih-alih penalizing them.
hiringOrganizationaccuracy dan no-misrepresentation masih apply. -
Myth: “Setting
validThroughin the future keeps a filled listing ‘safe.’” (terjemahan) “Setting undefined di future mempertahankan sebuah filled listing ‘safe.’” salah. Google disallows expired-di-practice postings regardless dari whatvalidThroughsays. halaman harus reflect reality. -
Myth: “JobPosting schema guarantees a ranking or traffic boost.” (terjemahan) “JobPosting schema guarantees sebuah peringkat atau traffic boost.” Overstated. ini membuat Anda eligible untuk Google untuk Jobs UI — ini adalah not sebuah peringkat factor untuk organic web hasil. apa pun CTR gains come dari richer, filterable UI, not 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 roles di once.” Explicitly banned. One job posting per halaman, full stop.
-
Myth: “The Indexing API is a general ‘get indexed faster’ tool for any page.” (terjemahan) “ pengindeksan API adalah sebuah umum ‘get terindeks faster’ 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 don’t perlu apa pun location field di semua.” salah.
jobLocationType: TELECOMMUTEreplaces perlu untuk sebuah spesifik officejobLocation, tetapi Google masih memerlukan setidaknya one eligible country — viaapplicantLocationRequirements(preferred) atau sebuah default taken darijobLocation— pada setiapTELECOMMUTEposting. There’s no valid case where sebuah remote job carries zero location informasi. -
Mistake: marking occasional-WFH atau hybrid roles sebagai
TELECOMMUTE.TELECOMMUTEadalah untuk 100%-remote berfungsi. di atas-claiming ini terhadap sebuah halaman itu describes sebuah hybrid role adalah sebuah konten mismatch itu risks disapproval.
SOP: expired-job hygiene
artikel adalah explicit itu ini isn’t sebuah one-time setup: expired-job hygiene adalah “an ongoing obligation,” (terjemahan) “sebuah ongoing obligation,” dan Google runs three sanctioned removal metode Anda perlu sebuah repeatable process untuk — ideally triggered oleh sebuah cron job, sebuah ATS integration, atau sebuah pengindeksan API panggil moment sebuah role closes, not 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 one dari three sanctioned metode — set
validThroughuntuk sebuah past date (dan leave halaman up hanya briefly), hapus halaman dan mengembalikan404/410, atau strip JobPosting markup while keeping halaman live. Done when: halaman no longer carries live, 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, fix adalah one dari three removal metode above — not sebuah fake future date. Done when:validThrough(jika present) reflects reality, not sebuah placeholder. -
Run sebuah scheduled reconciliation sweep (weekly adalah reasonable untuk moderate posting volume) cross-memeriksa setiap live 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 wasn’t. Done when: count dari “closed in ATS but still live with markup” (terjemahan) “closed di ATS tetapi masih live dengan markup” halaman adalah zero.
-
untuk tinggi-volume job boards, gunakan pengindeksan API untuk removal event itself (ini adalah one dari hanya two documented gunakan cases, alongside
BroadcastEvent), rather daripada waiting pada sebuah normal re-crawl. Done when: removal atauvalidThroughupdate adalah reflected di Google’s processing without sebuah multi-day crawl delay. -
Log which removal metode adalah digunakan dan when, per posting. ini adalah cheap insurance: jika sebuah manual tindakan review ever happens, Anda ingin sebuah record showing expired-job hygiene adalah sebuah functioning process, not 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 something 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 rendered halaman konten) dan -nya JobPosting JSON-LD block, labeled separately.
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 whether halaman backs ini up, plus exact JSON-LD nilai itu memiliki no terlihat counterpart jika one exists.
Prompt 2 — periksa untuk sebuah TELECOMMUTE / remote-berfungsi mismatch
Paste di: job’s terlihat deskripsi (specifically 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 yes/no pada whether markup dan deskripsi agree, dan jika not, which one ( 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 full HTML, atau sebuah live
URL, dan ini memeriksa JobPosting jenis specifically sebagai one dari -nya tracked rich-hasil
fitur: sebuah per-property breakdown dari ✓ eligible, ✗ exact missing diperlukan field
(title, description, datePosted, hiringOrganization, jobLocation), dan ⚠
untuk missing recommended fields (validThrough, employmentType, baseSalary).
Run 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 whether masalah adalah sebuah
missing diperlukan property atau something alat dapat’t see (like konten-schema
parity, which perlu sebuah human read 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 when Rich-hasil Eligibility Checker
flags sebuah property sebagai missing tetapi Anda’re not sure whether nilai adalah actually
absent atau hanya malformed enough itu parser dapat’t see ini.
antara two: run Rich-hasil Eligibility Checker untuk job-posting-spesifik eligibility pertanyaan (“will this qualify for Google for Jobs” (terjemahan) “akan ini qualify untuk Google untuk Jobs”), dan Schema Markup Validator when Anda perlu debug raw JSON-LD syntax underneath ini.
Standing KPIs untuk JobPosting health
ini adalah ongoing angka worth tracking quarter di atas quarter — not sebuah one-time launch periksa, tetapi whether Anda JobPosting implementation stays healthy sebagai postings come dan go.
Google untuk Jobs impressions dan clicks
- What ini tells Anda: whether Anda postings adalah actually 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), which breaks out impressions dan clicks specifically untuk halaman carrying valid JobPosting markup.
- Benchmark / realistic range: there’s no universal angka here — ini depends heavily pada Anda posting volume, vertical, dan how competitive “Google for Jobs” (terjemahan) “Google untuk Jobs” adalah untuk Anda roles. Establish Anda own baseline di atas Anda pertama few reporting cycles alih-alih comparing untuk sebuah industry figure.
- Cadence: weekly selama active hiring cycles; monthly adalah enough when posting volume adalah rendah.
Rolling disapproval rate
- What ini tells Anda: whether Anda ongoing hygiene process — konten-schema parity, one-job-per-halaman, expired-job removal — adalah actually holding up di atas time, alih-alih sebuah single poin-di-time compliance periksa.
- cara pull ini: valid/invalid/disapproved breakdown di Search Console’s job-posting rich-hasil report, tracked sebagai sebuah percentage dari Anda total live postings setiap period.
- Benchmark / realistic range: no industry-published baseline exists 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 run expired-job reconciliation sweep described di SOPs tab.
Time-untuk-removal lag
- What ini tells Anda: whether Anda removal pipeline (cron job, ATS integration, atau pengindeksan API panggil) adalah actually keeping pace dengan dunia nyata job closures — ini adalah root-cause metric behind both dari KPIs above, since disapprovals dan missed impressions both trace back untuk stale postings staying live too panjang.
- cara pull ini: compare Anda ATS’s “closed” (terjemahan) “closed” timestamp untuk sebuah role terhadap timestamp one dari three sanctioned removal metode adalah actually applied untuk itu halaman — sebuah internal ops log, not sebuah Search Console report.
- Benchmark / realistic range: artikel’s own steer adalah “the moment it closes,” (terjemahan) “ moment ini closes,” tetapi there’s no universal SLA untuk cite — set Anda own target berdasarkan how fast Anda ATS integration atau cron cadence dapat realistically run, dan mengukur terhadap itu.
- Cadence: reviewed per closure event where mungkin, atau pada sebuah rolling weekly basis jika closures adalah batched.
Test yourself: JobPosting Schema
Five quick pertanyaan pada JobPosting data terstruktur, Google untuk Jobs eligibility, dan policies itu get listings disapproved. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
I don’t memiliki sebuah dedicated artikel pada JobPosting schema atau Google untuk Jobs — ini adalah baru ground untuk me alih-alih sebuah topic I’ve written up sebelum, so I’m not going untuk manufacture sebuah citation. What carries di atas adalah my umum schema stance: implement markup when ini earns Anda sebuah nyata search fitur, pertahankan ini di parity dengan what’s terlihat pada halaman, dan validate sebelum Anda ship. JobPosting clears itu bar, which adalah why ini adalah worth doing precisely.
My related schema writing (umum, not job-spesifik)
- Schema Markup untuk AI — entity-infrastructure angle pada schema (sebuah berbeda pertanyaan dari rich-hasil eligibility).
- Beginner’s Guide untuk SEO teknis — where schema fits di bigger picture.
- SEO perusahaan — my pragmatic take: “I’m a fan of schema markup as long as it gets you a search feature.” (terjemahan) “I’m sebuah fan dari schema markup sebagai panjang sebagai ini gets Anda sebuah search fitur.”
dari sekitar industry
- John Mueller Discusses What 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 Search 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, not Google-confirmed).
- Major updates 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.