AEO Saigon
操作指南

JobPosting Schema:招聘信息出现在 Google for Jobs 和 AI 搜索中

文章目录

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排名更低始终设置实际发布日期
已过期信息未删除 schemaSearch Console 报错设置 validThrough,过期后删除 schema
薪资声明错误(VND 数字不完整)Google for Jobs 显示错误使用完整整数 VND:25000000 而非 25
jobLocation 缺少 addressCountrySchema 无效始终包含 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 引用吗?

免费审计