Google for Jobs 出现在越南超过 60% 的求职查询中。这个框出现在搜索栏正下方,显示公司 logo、职位名称、薪资和地址——占据搜索结果顶部的整个屏幕。没有 JobPosting schema 的企业根本不会出现在这里,即使招聘页面已被索引。
有无 JobPosting schema 的对比
| 没有 schema | 有完整 JobPosting schema |
|---|---|
| 只出现在自然搜索中(如果已被索引) | 出现在 Google for Jobs 轮播中 |
| SERP 上没有 logo、薪资、地址 | 显示 logo + 薪资 + 地点 + 申请按钮 |
| AI 不理解这是招聘信息 | AI 在被询问时摘要要求和福利 |
| 与所有网页平等竞争 | 筛入有 schema 的雇主群体 |
| 无法通过 Employer Center 跟踪 | 可通过 Google Search Console 监控 |
完整的 JSON-LD JobPosting
{
"@context": "https://schema.org",
"@type": "JobPosting",
"@id": "https://example.vn/vi/tuyen-dung/senior-digital-marketing-manager-hcm",
"title": "Senior Digital Marketing Manager",
"description": "Chúng tôi tìm kiếm Senior Digital Marketing Manager để dẫn dắt đội ngũ 5 người, quản lý ngân sách marketing 500 triệu/tháng và xây dựng chiến lược omnichannel cho thương hiệu FMCG hàng đầu tại Việt Nam.\n\nCông việc hàng ngày:\n- Lập kế hoạch và triển khai chiến dịch Google Ads, Meta Ads, TikTok Ads\n- Phân tích dữ liệu GA4, Meta Business Suite và báo cáo ROI hàng tuần\n- Quản lý và mentoring team marketing 5 người\n- Phối hợp với product team và creative team cho các campaign lớn\n- Tối ưu landing page và conversion funnel\n\nYêu cầu:\n- 4+ năm kinh nghiệm performance marketing\n- Thành thạo Google Ads, Meta Ads, TikTok for Business\n- Kinh nghiệm quản lý budget từ 200 triệu/tháng trở lên\n- Google Ads Certification là lợi thế\n\nQuyền lợi:\n- Lương cạnh tranh 30-45 triệu/tháng\n- Thưởng KPI hàng quý\n- Bảo hiểm sức khỏe cao cấp cho nhân viên và gia đình\n- Laptop MacBook được cung cấp\n- Work from home 2 ngày/tuần",
"datePosted": "2026-08-11",
"validThrough": "2026-09-11T23:59:59+07:00",
"employmentType": ["FULL_TIME"],
"hiringOrganization": {
"@type": "Organization",
"@id": "https://example.vn",
"name": "Công ty TNHH ABC Vietnam",
"url": "https://example.vn",
"logo": "https://example.vn/images/logo.png",
"sameAs": [
"https://www.linkedin.com/company/abc-vietnam",
"https://www.facebook.com/abcvietnam"
]
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "15 Lê Thánh Tôn, Bến Nghé",
"addressLocality": "Quận 1",
"addressRegion": "Hồ Chí Minh",
"addressCountry": "VN",
"postalCode": "700000"
}
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "VND",
"value": {
"@type": "QuantitativeValue",
"minValue": 30000000,
"maxValue": 45000000,
"unitText": "MONTH"
}
},
"experienceRequirements": {
"@type": "OccupationalExperienceRequirements",
"monthsOfExperience": 48
},
"educationalRequirements": {
"@type": "EducationalOccupationalCredential",
"credentialCategory": "bachelor degree"
},
"skills": "Google Ads, Meta Ads, TikTok Ads, Google Analytics 4, Performance Marketing, Budget Management",
"industry": "Marketing và Quảng cáo",
"occupationalCategory": "11-2021.00",
"applicationContact": {
"@type": "ContactPoint",
"email": "careers@example.vn",
"contactType": "HR"
},
"directApply": true
}
远程工作
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior Full-Stack Developer (Remote)",
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": {
"@type": "Country",
"name": "Vietnam"
},
"datePosted": "2026-08-11",
"validThrough": "2026-09-11",
"hiringOrganization": {
"@type": "Organization",
"name": "TechStartup VN",
"url": "https://techstartup.vn"
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 2000,
"maxValue": 3500,
"unitText": "MONTH"
}
},
"description": "..."
}
多职位的 Next.js 实施
// app/[lang]/tuyen-dung/[slug]/page.tsx
import type { WithContext, JobPosting } from "schema-dts";
export default async function JobPage({ params }) {
const job = await getJob(params.slug);
const jsonLd: WithContext<JobPosting> = {
"@context": "https://schema.org",
"@type": "JobPosting",
title: job.title,
description: job.fullDescription,
datePosted: job.postedAt.toISOString().split("T")[0],
validThrough: job.expiresAt.toISOString(),
employmentType: job.type === "full-time" ? "FULL_TIME" : "PART_TIME",
hiringOrganization: {
"@type": "Organization",
name: "Công ty ABC",
url: "https://example.vn",
logo: "https://example.vn/logo.png",
},
jobLocation: {
"@type": "Place",
address: {
"@type": "PostalAddress",
streetAddress: job.address,
addressLocality: job.district,
addressRegion: job.city,
addressCountry: "VN",
},
},
...(job.salaryMin && {
baseSalary: {
"@type": "MonetaryAmount",
currency: "VND",
value: {
"@type": "QuantitativeValue",
minValue: job.salaryMin,
maxValue: job.salaryMax,
unitText: "MONTH",
},
},
}),
...(job.isRemote && { jobLocationType: "TELECOMMUTE" }),
directApply: true,
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(jsonLd).replace(/</g, "\\u003c"),
}}
/>
{/* Job page content */}
</>
);
}
常见 JobPosting 错误
| 错误 | 后果 | 解决方法 |
|---|---|---|
| description 过短 | Google for Jobs 拒绝 | 至少 200 个词,包含具体要求和福利 |
| 没有 datePosted | 排名更低 | 始终设置实际发布日期 |
| 已过期信息未删除 schema | Search Console 报错 | 设置 validThrough,过期后删除 schema |
| 薪资声明错误(VND 数字不完整) | Google for Jobs 显示错误 | 使用完整整数 VND:25000000 而非 25 |
| jobLocation 缺少 addressCountry | Schema 无效 | 始终包含 addressCountry: "VN" |
| directApply: true 但没有申请 URL | 用户无法申请 | 添加 applicationContact 或申请 URL |
JobPosting schema 是少数几个 ROI 可直接衡量的 schema 之一——候选人数量、简历质量以及与 TopCV 或 VietnamWorks 等招聘平台相比的招聘成本。在网站上直接发布具有完整 schema 的招聘信息的企业,可以将对招聘平台的依赖降低 40-60%。
常见问题
Google for Jobs 是什么,JobPosting schema 有何帮助?
Google for Jobs 是当用户搜索工作时出现的功能(例如:'河内营销招聘'、'胡志明市软件工程师职位')。Google 在 SERP 顶部显示一个特殊框,列出职位、公司 logo、薪资、地点和申请按钮。JobPosting schema 是出现在此框中的必要条件——没有 schema,招聘信息即使已被索引也不会被筛入 Google for Jobs。Schema 还帮助 AI 在求职者向 AI 询问职业机会时摘要工作要求。
JobPosting schema 中哪些字段是必填的?
Google 最低要求:(1) title——职位名称,(2) description——对工作和要求的足够详细描述(不是标语),(3) hiringOrganization——公司名称和 url,(4) jobLocation——完整地址(远程则用 applicantLocationRequirements),(5) datePosted——发布日期。建议添加:baseSalary(具体薪资可显著提高点击率)、validThrough(申请截止日期)、employmentType、experienceRequirements、educationRequirements。没有 datePosted 的信息会被视为过时,Google for Jobs 会降低其优先级。
如何在 JobPosting schema 中声明薪资?
使用带有 MonetaryAmount 的 baseSalary:value(数字或范围)、currency(VND 或 USD)、unitText(MONTH、YEAR、HOUR)。固定薪资示例:value: 25000000,currency: VND,unitText: MONTH。薪资范围示例:使用 QuantitativeValue,minValue: 20000000,maxValue: 35000000,unitText: MONTH。Google 在 Google for Jobs 中突出显示薪资——有具体薪资的信息点击率比'面议'高 30-40%。如果薪资确实面议:省略 baseSalary,而不是填 0 或'面议'。
远程工作和混合工作如何声明?
完全远程:添加 jobLocationType: TELECOMMUTE 和带有 @type Country、name: Vietnam 的 applicantLocationRequirements(面向全球则留空)。混合:正常声明 jobLocation(办公室),并添加 jobLocationType: TELECOMMUTE——Google 会显示为混合工作。线下:只需 jobLocation,不需要 jobLocationType。重要:如果声明远程但实际上是线下,Google for Jobs 在核查后会拒绝。
职位招满后需要删除 JobPosting schema 吗?
是的——这是最常见的错误。当职位已招满时:(1) 将 validThrough 设为过去的日期,或 (2) 对该页面返回 HTTP 404,或 (3) 从页面中删除 JSON-LD script。已过期但仍有 schema 的招聘信息将被 Google for Jobs 报错,可能影响整个域名的信誉。对于 ATS 系统:将 validThrough 自动设置为招聘关闭日期。
AEO Saigon
位于胡志明市的答案引擎优化(AEO)机构 — 帮助企业网站被 AI 引用。 关于 AEO Saigon →
想让您的网站也这样被 AI 引用吗?
免费审计