SEO Playbook · Element

预约模块:可抓取的日程安排与预约用户体验

构建一个包含可抓取的服务、资格条件、位置、联系信息以及当第三方预约失败时的备用说明的在线预约模块。

3 min read

预约模块让读者可以在选择或请求预约的同时,将基本事实保留在 HTML 中。它包含具体的操作、服务和位置背景、资格条件、日程安排以及备用途径。

预约家电维修上门服务
洗碗机诊断 · 约 60 分钟
适用于 Northside 服务区域内的家庭。可能收取诊断费用。
选择预约时间
如果在线预约不可用,请拨打 (555) 014-0186,周一至周五,上午 8:00 至下午 6:00。

预约系统可以以内嵌、对话框或站外方式呈现。移除它不能移除服务、时长、区域、条件或备用方案。

为什么这个元素很重要

日程安排将兴趣转化为承诺。在那一刻,读者通常同时在确认三件事:“这是正确的预约吗?"、“这家企业能为我服务吗?“以及"我选择之后会发生什么?“一个只写着"立即预约"的模块迫使读者离开页面或进入挂件来解答这些问题。这种不确定性对于本地服务尤其代价高昂,因为错误的分支机构、时区、服务区域或预约类型可能导致预约无效。

清晰度降低了操作风险。“预约 30 分钟初步咨询"比"开始使用"设定了更明确的预期。可见的资格条件、费用、准备事项、取消条款和联系信息能在读者分享个人信息之前揭示不匹配。

机器可提取性很重要,因为许多预约系统通过第三方 iframe 或脚本加载。爬虫、AI 问答系统、被同意管理器阻挡的会话或辅助技术可能收到一个空框架,无法判断可以预约什么、在哪里、在什么条件下以及如何恢复。

请勿将实时时段复制到正文中——它们变化很快且属于预约系统。在宿主页面上渲染稳定的上下文:预约名称、位置、时长、资格条件、准备事项、费用、时区、提供方和备用方案。挂件则提供当前日期和时间。

在选择此组件之前,请先应用元素编写规则 。目的优先于外观。如果该模块安排的是有时间限制的互动,即使当前设计看起来像普通的行动号召,它也是一个预约模块。如果它仅收集销售咨询而不提供或请求预约,则应改用表单或 CTA。

何时使用

当读者可以执行明确的预约操作时,使用预约模块:预约服务上门、请求预约、选择咨询时段、安排看房、安排分支机构会议,或加入指定服务的候补名单。企业必须有一个可运行的流程来接收请求,并能确认、拒绝或重新安排。

常见的易混淆情况:

  • 通用联系表单——当不涉及日期、时间或预约请求时,不是预约模块。应标注为咨询并说明回复预期。
  • 行动号召按钮——当将读者发送到未加说明的日历时,不是完整的预约模块。应添加稳定的预约上下文和备用途径。
  • 营业时间——描述企业的运营时间,不能证明预约可用性。保持营业时间与实时时段分离。
  • 活动注册——预订的是固定活动的参加资格,而非安排个人服务时间。应使用相应的活动或注册模式。
  • 紧急联系途径——不得依赖常规日历。如果涉及紧急或急救帮助,应在任何预约系统之前说明正确的即时联系途径。

放置位置

将预约模块放置在页面已确立服务匹配度之后、次要推广内容之前。在位置页面 上,将其放在分支机构身份、地址或服务区域、营业时间以及可用服务的简要说明之后。在服务页面 上,将其放在范围、适用性和主要条件之后。页面末尾附近可以出现一个紧凑的重复操作,但应指向同一预约区域,而不是初始化第二个提供方实例。

请勿将该模块直接放置在主表单、另一个预约系统、无说明的电话 CTA 或促销倒计时旁边。竞争性操作会让人不清楚哪条途径是权威的。请勿将其放在选项卡、轮播、折叠面板、对比表格单元格、可点击卡片或同意层中。基本条件不得位于不相关的推荐或优惠内容下方。

对于关键服务,应将任何会改变读者是否应该预约的限制条件放在操作之前。切勿暗示选择时间即可确认资格。

结构

标注截图必须包含以下部分:

  1. 操作特定标题:说明可以预约什么,而不仅仅是"立即预约”。
  2. 服务摘要:用一句话说明目的。
  3. 位置背景:标明分支机构、服务区域或远程形式以及时区。
  4. 预约信息:显示时长、受众、费用条件和资格要求。
  5. 准备事项说明:说明影响预约成功的要求。
  6. 主要操作:使用具体的无障碍标签。
  7. 预约系统区域:包含实时时段、验证和提供方归属信息。
  8. 隐私说明:标识第三方数据处理方式。
  9. 确认预期:区分确认与请求。
  10. 备用途径:提供受监控的备选方式及其运营时间。

设计示例

每个变体都包含相同的可抓取上下文;只有实时选择的放置位置和复杂度发生变化。

内嵌预约系统

适用于单一服务和单一地点,当提供方可访问且稳定时使用。预留足够高度以避免布局偏移。

对话框或抽屉式预约系统

当内嵌日历会占据页面过多空间时使用。为对话框添加标签,提供关闭按钮,隔离背景,并在退出时返回焦点。

提供方托管的预约页面

当身份验证、支付、复杂的信息收集或提供方可靠性更适合使用提供方网站时使用。注明目标网站并保持备用方案可见。

预约请求

当工作人员需要核实资格条件、出行、设备或专家可用性时使用。要求提供首选时间并说明回复渠道和预期。

电话优先与辅助预约

当需要通过对话进行分诊或安全分配时使用。使电话号码可点击,并提供人工服务时间以及非语音备选方案。

多地点选择器

适用于多个分支机构。在显示时段之前确定分支机构,显示其地址和时区,并在确认过程中保留所选内容。

参数

“来源"描述了渲染器获取规范值的方式。提供方设置可能控制实时库存,但不能替代以下可见内容字段。

名称类型必填最小/最大默认值来源
title纯文本3–10 个词;90 个字符正文中的第一个标题
id小写标识符发布后必填2–8 个连字符连接的词;页面内唯一从标题生成,然后固定属性
variant枚举inline, dialog, external, request, phone-first, multi-locationinline属性
service纯文本2–12 个词;100 个字符属性
summary纯文本12–35 个词;240 个字符标题后的第一段
durationISO 8601 时长加可见标签条件必填5 分钟–1 天属性和正文
location纯文本或稳定位置 ID是(完全远程除外)2–100 个字符属性和正文
timezoneIANA 时区 ID条件必填一个有效时区,如 America/New_York位置时区属性
eligibility纯文本或简短列表条件必填1–5 个条件;总计 200 词正文
preparation纯文本或简短列表1–5 项;总计 150 词正文
feeNote纯文本条件必填5–30 个词;200 个字符正文
provider纯文本第三方预约时必填2–80 个字符属性
srcHTTPS URL内嵌、对话框或外部提供方时必填一个经批准的地址属性
ctaLabel纯文本2–8 个词;60 个字符Choose an appointment time属性
confirmationMode枚举instantrequestrequest属性
confirmationText纯文本8–35 个词;240 个字符正文
fallbackPhone电话号码加可见格式条件必填一个受监控的号码属性和正文
fallbackUrlHTTPS 或根相对 URL条件必填一个可访问的备选途径属性
fallbackHours纯文本条件必填3–20 个词正文
privacyText纯文本数据离开网站时必填8–30 个词;220 个字符正文

使用第三方代码时,fallbackPhonefallbackUrl 至少需要提供其中一项。第一个标题映射到 title,第一段映射到 summary,其余正文映射到事实、确认、隐私和备用信息。实时时段从不属于创作内容。

语法与代码示例

三种表示法保留相同的服务、分支机构、时长、提供方、确认模式和备用方案。URL 仅供示意。

可移植 Markdown 指令

:::booking-block{id=dishwasher-repair service="Dishwasher diagnosis" variant=inline duration=PT1H location=northside timezone=America/Chicago provider="Example Scheduler" src="https://scheduler.example.com/northside/dishwasher" ctaLabel="Choose an appointment time" confirmationMode=instant fallbackPhone="+15550140186"}
## 预约家电维修上门服务

在 Northside 分店选择 60 分钟的洗碗机诊断服务。

适用于 Northside 服务区域内的家庭。可能收取诊断费用,将在上门前确认。

您的预约仅在收到包含日期、时间、地址和参考编号的电子邮件后确认。

预约服务由 Example Scheduler 提供。如果无法加载,请拨打 (555) 014-0186,周一至周五,上午 8:00 至下午 6:00。
:::

Hugo 短代码

这是预期的适配器约定,并非断言该短代码已存在。仅使用命名参数。

{{< booking-block id="dishwasher-repair" service="Dishwasher diagnosis" variant="inline" duration="PT1H" location="northside" timezone="America/Chicago" provider="Example Scheduler" src="https://scheduler.example.com/northside/dishwasher" ctaLabel="Choose an appointment time" confirmationMode="instant" fallbackPhone="+15550140186" >}}
## 预约家电维修上门服务

在 Northside 分店选择 60 分钟的洗碗机诊断服务。

适用于 Northside 服务区域内的家庭。可能收取诊断费用,将在上门前确认。

您的预约仅在收到包含日期、时间、地址和参考编号的电子邮件后确认。

预约服务由 Example Scheduler 提供。如果无法加载,请拨打 (555) 014-0186,周一至周五,上午 8:00 至下午 6:00。
{{< /booking-block >}}

Hugo 渲染器在服务器上输出稳定内容和备用信息,然后将提供方加载到标注区域中。

WordPress 区块

<!-- wp:amicited/booking-block {"id":"dishwasher-repair","service":"Dishwasher diagnosis","variant":"inline","duration":"PT1H","location":"northside","timezone":"America/Chicago","provider":"Example Scheduler","src":"https://scheduler.example.com/northside/dishwasher","ctaLabel":"Choose an appointment time","confirmationMode":"instant","fallbackPhone":"+15550140186"} -->
<h2>预约家电维修上门服务</h2>
<p>在 Northside 分店选择 60 分钟的洗碗机诊断服务。</p>
<p>适用于 Northside 服务区域内的家庭。可能收取诊断费用,将在上门前确认。</p>
<p>您的预约仅在收到包含日期、时间、地址和参考编号的电子邮件后确认。</p>
<p>预约服务由 Example Scheduler 提供。如果无法加载,请拨打 <a href="tel:+15550140186">(555) 014-0186</a>,周一至周五,上午 8:00 至下午 6:00。</p>
<!-- /wp:amicited/booking-block -->

已注册的区块通过 PHP 渲染稳定内容,并将提供方代码视为渐进增强。

示例

好的:带有可恢复途径的单个预约

预约 30 分钟税务文件审核

该模块标明了市中心分店、本地时区、需要携带的文件,以及会议审核记录但不保证报税资格的说明。“选择审核时间"按钮打开日历。在其下方,页面说明确认信息将通过电子邮件发送,并提供了在提供方不可用时的人工服务电话及服务时间。

这样设计有效,因为匹配度在输入数据之前就已明确,并且即使没有日历,意义仍然存在。预约系统负责可用性;页面负责持久服务信息和恢复。

差的:无上下文的 iframe

立即预约
一个未加标签的 iframe 加载了提供方日历。分支机构、时区、预约类型、时长、费用、资格条件、确认状态和备用联系方式均缺失。

差的版本让读者和提取器从第三方 UI 推断提供内容。系统故障留下空白区域,预约请求可能被误认为确认。修复方法:使用 HTML 预约约定、带标签的嵌入内容、保留的选择、确认措辞和备用方案。

结构化数据标记与无障碍

预约模块不会自动产生结构化数据需求。包含该模块的页面可能已经用适当的 LocalBusiness、更具体的业务类型、OrganizationService 实体描述了可见的业务或服务。请确保这些信息与预约文本一致,尤其是名称、位置、电话号码、服务区域和营业时间。

ReserveAction 可以表示真实的预约操作,前提是其目标指向可见且可用的途径,且该操作准确属于描述中的实体。它不得暗示某个时段可用、请求已确认或每位访客都符合条件。请勿将预约日期发布为 Event,将普通营业时间视为可预约库存,或编造页面和预约系统无法验证的结构化值。

无障碍始于加载之前。使用真正的标题和包含目的的可访问名称的操作。为 iframe 提供具体的 title,例如"在 Northside 选择洗碗机维修预约”。切勿使用占位文本作为唯一的字段标签。

键盘用户必须能够进入、操作和退出,而不会陷入焦点陷阱。对话框需要名称、初始焦点、关闭操作、背景隔离和焦点返回。验证需要标识字段和更正内容。日期状态不能仅依赖颜色,状态更新必须通过辅助技术播报。

将备用方案保持在正常阅读顺序中,且不需 JavaScript 即可显示。流程在 200% 缩放和窄屏幕宽度下必须正常工作。显示时区并避免使用有歧义的数字日期。

如果提供方在键盘操作、屏幕阅读器兼容性、对比度、隐私或恢复方面不达标,应提供等效的辅助途径。CAPTCHA、支付和身份验证也需要无障碍恢复方案。

编写规则

  • 编写 3–10 个词的标题,将操作与预约结合:“预约听力测试”,而不是"预约"或"开始使用”。
  • 编写一段 12–35 词的摘要,在已知的情况下说明服务、形式、时长和位置。
  • 最多列出五个资格条件或准备事项。仅总结较长政策中改变决策的规则。
  • 使用 2–8 个词的具体操作标签:“选择咨询时间”、“请求上门服务"或"致电安排评估”。避免使用"提交”、“继续"和"点击此处”。
  • 区分即时确认预约请求。当仍需工作人员批准时,切勿使用"已预约”。
  • 只要读者可能跨时区预约或预约是远程进行的,就应说明时区。在确认信息中使用明确无误的书面日期。
  • 当可能产生预约费、押金、取消费、诊断费或未到场费用时,在读者选择时间之前说明费用。请勿将必需付款隐藏在提供方的步骤中。
  • 将服务名称、时长、位置、资格条件、必要的准备事项、确认行为及备用方案保留在 iframe 或客户端应用程序之外。
  • 在数据传输前说明提供方名称,并解释交接过程,但不要承诺不支持的隐私行为。
  • 提供备用途径、人工服务时间、回复预期以及需要提供的预约上下文信息。
  • 对于多地点预约,在触发按钮、预约系统和确认信息中标明所选分支机构。切勿在未预先选择或要求明确地点选择的情况下重用整个企业的"立即预约"链接。
  • 将紧急说明、临床建议、保证、推荐、折扣倒计时、无关优惠和第二个潜在客户表单排除在预约模块之外。
  • 请勿编写静态的"下一个可用"声明,除非它们是从实时库存生成并标注了检索时间。可用性可能在抓取、点击和确认之间发生变化。
  • 指定负责人,并在营业时间、地点、费用、资格条件、提供方行为或接诊政策发生变化后审核更新。

使用该模块的文章类型

postTypes 前置元数据数组驱动此矩阵。包含某种文章类型意味着该页面在存在真实预约操作时可以使用预约模块;并不要求每个页面都包含日程安排功能。

文章类型用途推荐位置必需条件
位置页面当分支机构接受预约时推荐使用分支机构服务、地址或服务区域以及营业时间之后预先选择分支机构或要求明确选择分支机构;显示分支机构特定的备用信息
服务页面可直接预约的服务推荐使用范围、适用性和实质性条件之后在预约过程中保留指定的服务名称,并区分已确认时段与请求
分支机构档案有条件使用,需有人工服务预约途径分支机构身份和访问信息之后将日历、时区、电话、服务项目和确认途径与该分支机构匹配
公司档案有条件使用组织信息和符合条件的预约类型明确之后引导读者到具体的服务和位置;不要暴露未经说明的整个企业日历

QA 检查清单

  • 该模块安排或请求的是定义的预约,而非收集一般咨询。
  • 可见标题标明了预约名称,操作标签描述了下一个预约步骤。
  • 服务、时长、位置或服务区域、时区、资格条件和实质性费用条件准确无误。
  • 稳定的预约信息以 HTML 形式呈现,不依赖提供方、iframe、同意管理器或 JavaScript。
  • 实时可用性来自权威预约系统,不复制到静态正文中。
  • 所选服务和位置从触发按钮到日历、验证、确认和恢复过程始终保持一致。
  • 页面区分即时确认与需要工作人员批准的请求。
  • 第三方提供方在数据传输之前已标识,隐私措辞与实际流程一致。
  • 失败、无可用时段、验证、取消和重新安排的状态各提供有用的后续操作。
  • 当挂件失败时,受监控的备用电话或可访问的备选途径保持可见。
  • 备用说明包含人工服务时间或现实的回复预期。
  • 预约系统具有特定的无障碍名称,支持键盘、屏幕阅读器、触摸、缩放和窄屏幕。
  • 焦点的进入和退出任何对话框都可预测,验证不会清除之前有效的选择。
  • 日期和时间无歧义,包含相关时区,且不依赖颜色区分。
  • 紧急或关键限制条件出现在操作之前,且从不依赖于预约系统。
  • 主操作旁边没有竞争性的预约系统、潜在客户表单、倒计时或无关推广内容。
  • 结构化数据反映可见且经过验证的业务和服务信息,不编造可用性或确认状态。
  • 所选文章类型出现在 postTypes 中,且放置位置遵循上述矩阵。
  • 已指定负责人和审核触发条件,用于内容、备用联系方式、提供方集成和确认行为。

常见问题

预约挂件可以是页面上唯一的预约信息吗?

不可以。第三方挂件可能失败、需要同意、阻止爬虫,或无法与某些辅助技术兼容。请将服务、位置、资格条件、准备事项、联系方式和备用说明保留在挂件之外的服务器渲染 HTML 中。

预约系统应该在当前页面打开,还是在提供商的网站上打开?

如果页面内的预约系统具有可访问性、速度快且易于恢复,请使用内嵌或模态方式。如果提供商在其自己的域名上运行更可靠,请使用清晰标注的外部链接。无论采用哪种方式,页面上都应保留相同的可抓取上下文和非挂件备用方案。

预约模块需要结构化数据标记吗?

不一定。周围的页面可能符合 LocalBusinessService 或其他相关类型的条件。只有当操作目标是真实、稳定且准确代表可见预约路径时,才添加 ReserveAction;切勿在结构化数据中编造实时预约可用性。

多地点企业应如何处理预约?

在读者进入预约流程之前明确位置信息,在每一步骤中保留所选位置,并以 HTML 形式显示其地址、时区和备用联系方式。切勿将每个分支机构页面都指向一个未经筛选的整个企业日历。

当没有可预约的时间时应该怎么办?

解释下一个有效途径,同时不暗示该企业已关闭:提供其他地点、候补名单、电话号码、申请表单,或一个明确的再次查询日期。保留已选的服务和位置,这样读者无需重新开始。

← All SEO Playbook guides

准备好付诸实践了吗?

免费检查 · 7天试用 · 无需信用卡