我为多地点卫生系统、独立皮肤科诊所以及介于两者之间的各种医疗机构建立过医生目录网站。我在医疗保健网站中看到的最大错失机会是结构化数据。我说的不是通用的 LocalBusiness 类型——我指的是特定的 PhysicianMedicalSpecialty 架构类型,它们能准确告诉谷歌医疗提供者的专科、执业地点,以及患者为什么应该信任他们。

大多数医疗实践网站要么没有架构标记,要么标记不正确——通常是由某个 WordPress 插件生成的,该插件对心内科诊所和披萨店一视同仁。本指南为真实医学专科——心内科、儿科、泌尿科、骨科等——提供生产级 JSON-LD,并解释每个属性选择背后的逻辑。

目录

医疗实践架构标记:每个医生专科的 JSON-LD

为什么医疗架构标记在 2026 年很重要

谷歌的 AI 概览现在主导医疗搜索。当患者搜索"我附近接收新患者的心内科医生"时,谷歌不再仅仅扫描你的页面文本——它会读取你的结构化数据来构建实体关系、填充知识面板并为 AI 生成的答案提供信息。

适当的医疗架构标记可以触发以下内容:

富文本结果类型 触发方式 影响
评论片段 Physician 上的 AggregateRating SERP 中的星级评分
知识面板 Physician + sameAs 链接 命名医生的品牌展现
本地包增强 MedicalClinic + openingHours 地图列表详情
FAQ 富文本结果 FAQPage 架构(医疗网站仍符合条件) 扩展的 SERP 房地产
AI 概览引用 完整的实体图 在 AI 答案中被引用为来源

BrightLocal 2025 年的研究发现,带有评论片段的医疗保健列表的点击率比没有的高 37%。Schema App 的研究确认,具有完整结构化数据的医生页面在 AI 概览引用中出现的可能性高 2.8 倍。

底线是:如果你的医生页面没有适当的架构标记,你就在浪费可见性。

医疗实践的 Schema.org 类型

在编写任何代码之前,让我们理解类型层次结构。Schema.org 给了我们几个与医疗保健相关的类型,选择正确的类型很重要。

Thing
└── Organization
    └── LocalBusiness
        └── MedicalBusiness
            ├── MedicalClinic
            ├── Optician
            ├── Pharmacy
            └── Physician

PhysicianMedicalBusiness 的子类型,MedicalBusiness 本身是 LocalBusiness 的子类型。这很重要,因为这意味着 Physician 实体继承所有本地业务属性(地址、营业时间、地理坐标)加上医学特定属性,如 medicalSpecialtyhospitalAffiliation

对于独立从业者的网站,Physician 是你的主要类型。对于多医生诊所,你需要将 MedicalClinicMedicalOrganization 作为父实体,每个医生有单独的 Physician 条目嵌套或通过 member 链接或在单独的页面上引用。

何时使用什么

你的设置 主要类型 次要类型
独立医生,一个地点 Physician MedicalOrganization(可选)
集团诊所,单一地点 MedicalClinic 每个医生页面的 Physician
卫生系统,多个地点 MedicalOrganization 每个地点的 MedicalClinic,每个医生的 Physician
医院 Hospital PhysicianMedicalClinic(科室)

理解 MedicalSpecialty 枚举值

medicalSpecialty 属性接受来自 Schema.org 的 MedicalSpecialty 枚举的值。这些不是自由文本字段——它们是特定的预定义值。以下是你最常使用的:

专科 Schema.org 值 注释
心内科 Cardiovascular 涵盖心内科和心血管手术
儿科 Pediatric 普通儿科
泌尿科 Urologic 包括小儿泌尿科
皮肤科 Dermatology 也有 DermatologyLaserSurgery 变体
骨科 Musculoskeletal 骨外科属于此类
神经内科 Neurological 不同于 Psychiatric
妇产科 Obstetric 和/或 Gynecologic 可以同时指定
急诊医学 Emergency 急诊科医生
全科医学 PrimaryCare 普通诊疗,家庭医学
肿瘤学 Oncologic 癌症治疗
肺科 Pulmonary 肺和呼吸科医生
胃肠病学 Gastroenterologic 胃肠科医生
内分泌学 Endocrine 糖尿病、甲状腺等
眼科 Optometric 眼睛护理
精神病学 Psychiatric 心理健康医生

完整列表可在 schema.org/MedicalSpecialty 查看。请注意,某些专科映射到的范围比你预期的要广——例如,没有单独的"介入心内科"值。你可以使用 Cardiovascular 并在医生的 descriptionknowsAbout 属性中描述亚专科。

医疗实践架构标记:每个医生专科的 JSON-LD - 架构

基础 Physician JSON-LD 模板

以下是任何医生页面的可靠起点模板。我会注明关键决定。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Physician",
  "@id": "https://example.com/doctors/jane-smith#physician",
  "name": "Dr. Jane Smith, MD, FACC",
  "image": "https://example.com/images/dr-jane-smith.jpg",
  "url": "https://example.com/doctors/jane-smith",
  "telephone": "+1-555-867-5309",
  "description": "Board-certified cardiologist specializing in interventional cardiology and structural heart disease with 15 years of clinical experience.",
  "medicalSpecialty": "https://schema.org/Cardiovascular",
  "isAcceptingNewPatients": true,
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "450 Heart Center Drive, Suite 200",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 30.2672,
    "longitude": -97.7431
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "17:00"
    }
  ],
  "sameAs": [
    "https://www.healthgrades.com/physician/dr-jane-smith",
    "https://www.doximity.com/pub/jane-smith-md",
    "https://www.linkedin.com/in/drjanesmith"
  ],
  "alumniOf": {
    "@type": "CollegeOrUniversity",
    "name": "Johns Hopkins University School of Medicine"
  },
  "hasCredential": [
    {
      "@type": "EducationalOccupationalCredential",
      "credentialCategory": "Board Certification",
      "name": "American Board of Internal Medicine - Cardiovascular Disease"
    }
  ],
  "hospitalAffiliation": {
    "@type": "Hospital",
    "name": "St. David's Medical Center",
    "url": "https://stdavids.com"
  },
  "worksFor": {
    "@type": "MedicalOrganization",
    "@id": "https://example.com/#organization",
    "name": "Austin Heart Specialists"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "142",
    "bestRating": "5"
  }
}
</script>

我想强调几点:

  • @id:这为该实体创建唯一标识符。使用页面 URL 加上片段。当你跨页面将医生链接到组织时,这变得至关重要。
  • medicalSpecialty:我使用完整 URL 形式(https://schema.org/Cardiovascular)而不仅仅是字符串。两种都有效,但 URL 形式更明确。
  • isAcceptingNewPatients:这是 Physician 特有的较新属性。使用它。患者经常搜索这个。
  • sameAs:链接到验证的第三方个人资料。谷歌就是这样建立实体信心并可能触发知识面板的。
  • aggregateRating:只有在页面上显示评论时才包括此项。谷歌的指南对此很严格——隐藏的评分违反了他们的政策。

专科特定的 JSON-LD 示例

让我们为人们实际搜索的专科构建示例。

心内科(心血管)

{
  "@context": "https://schema.org",
  "@type": "Physician",
  "name": "Dr. Robert Chen, MD, FACC",
  "medicalSpecialty": "https://schema.org/Cardiovascular",
  "knowsAbout": [
    "Interventional Cardiology",
    "Cardiac Catheterization",
    "Coronary Artery Disease",
    "Heart Failure Management",
    "Echocardiography"
  ],
  "availableService": [
    {
      "@type": "MedicalProcedure",
      "name": "Cardiac Catheterization",
      "procedureType": "https://schema.org/PercutaneousProcedure"
    },
    {
      "@type": "MedicalTest",
      "name": "Stress Echocardiography"
    },
    {
      "@type": "MedicalTest",
      "name": "Electrocardiogram (ECG/EKG)"
    }
  ]
}

availableService 属性是 Physician 特有的,允许你指定确切的程序和测试。对于心内科,介入性和诊断性的分割自然映射到这一区分。

儿科

{
  "@context": "https://schema.org",
  "@type": "Physician",
  "name": "Dr. Maria Gonzalez, MD, FAAP",
  "medicalSpecialty": "https://schema.org/Pediatric",
  "knowsAbout": [
    "Well-Child Visits",
    "Childhood Immunizations",
    "Developmental Screening",
    "Adolescent Medicine",
    "Newborn Care"
  ],
  "availableService": [
    {
      "@type": "MedicalTherapy",
      "name": "Pediatric Vaccination Program"
    },
    {
      "@type": "MedicalTest",
      "name": "Developmental Milestone Assessment"
    }
  ],
  "hasCredential": [
    {
      "@type": "EducationalOccupationalCredential",
      "credentialCategory": "Board Certification",
      "name": "American Board of Pediatrics"
    }
  ]
}

儿科很有趣,因为 MedicalSpecialty 值就是 Pediatric——儿科亚专科没有单独的值,比如儿科心脏病学。对于儿科心脏科医生,你需要包括两个专科:

"medicalSpecialty": [
  "https://schema.org/Pediatric",
  "https://schema.org/Cardiovascular"
]

是的,medicalSpecialty 接受数组。使用它。

泌尿科

{
  "@context": "https://schema.org",
  "@type": "Physician",
  "name": "Dr. Michael Torres, MD, FACS",
  "medicalSpecialty": "https://schema.org/Urologic",
  "knowsAbout": [
    "Robotic-Assisted Surgery",
    "Prostate Cancer Treatment",
    "Kidney Stone Management",
    "Urinary Incontinence",
    "Male Infertility"
  ],
  "availableService": [
    {
      "@type": "MedicalProcedure",
      "name": "Robot-Assisted Laparoscopic Prostatectomy",
      "procedureType": "https://schema.org/SurgicalProcedure"
    },
    {
      "@type": "MedicalProcedure",
      "name": "Extracorporeal Shock Wave Lithotripsy (ESWL)",
      "procedureType": "https://schema.org/NoninvasiveProcedure"
    },
    {
      "@type": "MedicalTest",
      "name": "Cystoscopy"
    }
  ]
}

骨科

{
  "@context": "https://schema.org",
  "@type": "Physician",
  "name": "Dr. Sarah Kim, MD",
  "medicalSpecialty": "https://schema.org/Musculoskeletal",
  "knowsAbout": [
    "Total Joint Replacement",
    "Sports Medicine",
    "Arthroscopic Surgery",
    "Fracture Care",
    "Rotator Cuff Repair"
  ],
  "availableService": [
    {
      "@type": "MedicalProcedure",
      "name": "Total Knee Arthroplasty",
      "procedureType": "https://schema.org/SurgicalProcedure"
    },
    {
      "@type": "MedicalProcedure",
      "name": "Arthroscopic ACL Reconstruction",
      "procedureType": "https://schema.org/SurgicalProcedure"
    }
  ]
}

注意 medicalSpecialty 值是 Musculoskeletal,而不是"骨科"。这个让人困惑。

MedicalOrganization 和 MedicalClinic 架构

你的组织级架构是基础。每个医生实体都应该引用回它。这是一个完整的 MedicalClinic 示例:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MedicalClinic",
  "@id": "https://example.com/#clinic",
  "name": "Austin Heart Specialists",
  "url": "https://example.com",
  "logo": "https://example.com/images/logo.png",
  "image": "https://example.com/images/clinic-exterior.jpg",
  "telephone": "+1-555-867-5309",
  "medicalSpecialty": "https://schema.org/Cardiovascular",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "450 Heart Center Drive",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 30.2672,
    "longitude": -97.7431
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "07:30",
      "closes": "17:30"
    }
  ],
  "availableService": [
    {
      "@type": "MedicalTest",
      "name": "Cardiac Stress Testing"
    },
    {
      "@type": "MedicalProcedure",
      "name": "Cardiac Catheterization"
    }
  ],
  "member": [
    {
      "@type": "Physician",
      "@id": "https://example.com/doctors/jane-smith#physician"
    },
    {
      "@type": "Physician",
      "@id": "https://example.com/doctors/robert-chen#physician"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/austinheartspecialists",
    "https://www.google.com/maps/place/?q=place_id:ChIJ_____"
  ]
}
</script>

member 数组使用 @id 引用来链接到在各自页面上定义的医生实体。这创建了一个谷歌可以遍历的连接图。

将医生连接到组织

这是大多数实现出现问题的地方。你需要双向引用:

  1. 组织 → 医生:在组织页面上使用 member
  2. 医生 → 组织:在医生页面上使用 worksFor

两者都应引用相同的 @id。把它看作数据库中的外键。如果 ID 不匹配,谷歌无法连接它们。

// 在医生页面上:
"worksFor": {
  "@type": "MedicalClinic",
  "@id": "https://example.com/#clinic",
  "name": "Austin Heart Specialists"
}

// 在组织页面上:
"member": [
  {
    "@type": "Physician",
    "@id": "https://example.com/doctors/jane-smith#physician"
  }
]

对于多地点诊所,每个地点应该是一个单独的 MedicalClinic 实体,有自己的 @id,在多个地点执业的医生应该使用 practicesAt(数组)而不是 worksFor

如果你在无头 CMS 平台上构建这些网站,这种关系数据建模完美映射到 Sanity 或 Contentful 等系统中的内容引用。我们在我们的无头 CMS 开发工作中处理这个确切的模式——CMS 内容模型镜像 schema.org 实体图。

构建 E-E-A-T 的属性

谷歌的质量评分员评估经验、专业知识、权威性和可信度(对于 YMYL——你的金钱或生活内容)。医疗保健是典型的 YMYL 类别。这些架构属性直接支持 E-E-A-T 信号:

属性 类型 E-E-A-T 信号
hasCredential EducationalOccupationalCredential 专业知识
alumniOf CollegeOrUniversity 专业知识
memberOf Organization 权威性
hospitalAffiliation Hospital 权威性、信任
award Text 权威性
knowsAbout TextThing 专业知识
medicalSpecialty MedicalSpecialty 专业知识
sameAs URL 信任(交叉引用验证)
aggregateRating AggregateRating 信任(社会证明)

关键规则:你只能标记页面上可见的内容。如果你在架构中列出医学委员会认证但在医生的个人资料页面上不显示它们,你违反了谷歌的结构化数据指南。先添加内容,然后标记它。

验证和测试

在推送到生产之前:

  1. 谷歌富文本结果测试(search.google.com/test/rich-results):验证富文本结果的资格
  2. Schema 标记验证器(validator.schema.org):检查语法和 Schema.org 词汇的一致性
  3. 谷歌搜索控制台:部署后监控"增强功能"部分以查找任何错误

这是我的测试工作流程:

# 如果你以编程方式生成架构(Next.js、Astro 等)
# 首先将 JSON 输出到文件并在本地验证
node -e "const schema = require('./generate-schema.js'); console.log(JSON.stringify(schema, null, 2))" > schema-output.json

# 然后粘贴到 validator.schema.org 或使用他们的 API

如果你使用 Next.jsAstro 构建,你可以从 CMS 数据动态生成这些 JSON-LD 块。两个框架都能清晰处理 <script type="application/ld+json"> 注入——Next.js 通过 <Script> 组件或 next/head,Astro 通过其 <head> 插槽。

要避免的常见错误

使用通用 LocalBusiness 而不是 Physician。 你失去了所有医学特定的属性。Physician LocalBusiness,所以你获得 LocalBusiness 提供的所有内容加上更多。

自由文本 medicalSpecialty 值。"medicalSpecialty": "Cardiology" 而不是使用正确的枚举值(Cardiovascular)意味着谷歌可能无法正确理解专科。

缺少地理坐标。 纬度/经度数据帮助谷歌将你的诊所与基于地点的查询相关联。不要跳过它。

跨不同实体的重复 @id 值。 每个实体需要唯一的 @id。我看到过多个医生共享相同 @id 后缀的实现——这完全破坏了实体图。

标记页面上不存在的内容。 这值得重申。谷歌的指南很明确:结构化数据中的所有内容必须对应于可见的内容。违规可能导致人工操作。

忽略 isAcceptingNewPatients 这是高意图信号。患者按此过滤。包括它并保持其更新。

常见问题

Physician 和 MedicalBusiness 架构类型之间有什么区别? PhysicianMedicalBusiness 的子类型。对个人医生页面使用 Physician,对诊所本身使用 MedicalBusiness(更具体地说,MedicalClinic)。PhysicianMedicalBusiness 继承所有属性,并添加医生特定的属性,如 hospitalAffiliationavailableServiceisAcceptingNewPatients

我可以为一个医生列出多个医学专科吗? 可以。medicalSpecialty 属性接受数组。既是儿科又是心血管专科医生的医生可以列出两个:"medicalSpecialty": ["https://schema.org/Pediatric", "https://schema.org/Cardiovascular"]。这对于双重认证医生很常见。

医疗架构标记是否直接改进谷歌排名? 结构化数据不是直接排名因素。然而,它启用富文本结果(星级评分、FAQ 下拉列表、知识面板),这些显著改进点击率。它还向谷歌的实体理解提供信息,影响你的诊所在 AI 概览和本地包结果中的显示方式。间接 SEO 影响是实质性的。

医院医生目录应该使用什么架构类型? 使用 Hospital 作为顶级实体,MedicalClinic 为各个科室(例如,心脏病科),Physician 为每个医生页面。用 memberworksFordepartment 属性连接它们。这创建了一个完整的组织图。

JSON-LD 是医疗架构标记的唯一格式吗? 不——你也可以使用嵌入在 HTML 中的 Microdata 或 RDFa。但谷歌明确推荐 JSON-LD,这是他们在所有文档示例中使用的格式。JSON-LD 也更容易维护,因为它与你的页面布局分开。你可以从 CMS 数据以编程方式生成它,而不需要接触模板。

我如何处理在多个地点执业的医生? 使用带有 MedicalClinicHospital 实体数组的 practicesAt 属性,每个都有自己的 @id。不要跨地点复制医生实体——创建一个规范的 Physician 实体并将其链接到多个执业地点。每个地点的架构也应通过 member 引用医生。

我应该在医生架构中包括患者评论吗? 只有在患者评论在医生页面上显示时才包括。在 Physician 类型上使用 aggregateRating 属性,包括 ratingValuereviewCountbestRating。谷歌对此很认真——标记隐藏或虚假评论可能导致人工处罚。如果你通过 Healthgrades 等第三方平台收集评论,改为通过 sameAs 链接到它们。

我应该多久更新一次医疗实践架构标记? 每当基础信息改变时更新你的结构化数据:新办公时间、医生离职或入职、医生停止接收新患者或联系信息改变。对于使用动态架构生成的无头 CMS 诊所,CMS 内容编辑更新 CMS 时自动发生。如果你对 JSON-LD 进行硬编码,最少设置季度审查节奏。陈旧的结构化数据——特别是不正确的 isAcceptingNewPatientstelephone 值——会侵蚀谷歌和患者的信任。