应使用 itemtype="http://schema.org/flightreservation" 而非 thing,搭配 itemscope 及必需 itemprop(如 flightnumber、departuretime 等),时间需 iso 8601 带时区,机场推荐嵌套 airport 并提供 airportcode;动态内容宜服务端渲染或用 json-ld;火车行程须改用 traintrip。

itemtype 应该用 Schema.org 的 FlightReservation 而不是泛泛的 Thing
直接写 itemtype="http://schema.org/FlightReservation" 才能被搜索引擎正确识别为航班预订,而不是普通文本。用 itemtype="http://schema.org/Thing" 或空值、错拼 URL(比如漏掉 http:// 或写成 schemas.org)会导致结构化数据校验失败。
常见错误现象:Google Rich Results Test 报 “No structured data detected”,或在 Search Console 的「增强报告」里看不到航班类结果。
- 必须搭配
itemscope使用,即:<div itemscope itemtype="http://schema.org/FlightReservation"> <li>国内航班推荐用 <code>http://schema.org/FlightReservation;国际场景若含多段中转,可考虑http://schema.org/FlightLeg配合嵌套 - 不要混用旧版 data-vocabulary.org(已弃用),
itemtype只认 schema.org -
flightNumber必须是字符串,如"MU5102",不能是数字5102 -
departureTime和arrivalTime必须是 ISO 8601 格式,带时区,如"2024-06-15T08:30+08:00";只写"08:30"或"2024-06-15"无效 -
departureAirport和arrivalAirport推荐嵌套itemtype="http://schema.org/Airport"并提供airportCode,例如:<meta itemprop="airportCode" content="PVG"> - 出发/到达时间这类关键字段,优先由后端模板直接输出,避免
document.querySelector(...).setAttribute(...)动态补全 - 若必须前端更新(如实时状态“登机口变更”),用
JSON-LD替代microdata:把完整结构塞进<script type="application/ld+json"></script>,再用 JS 替换整个script内容,比反复操作 DOM 属性更可靠 - 测试时用
curl -s URL | grep -A5 -B5 "itemprop"看源码是否真包含字段,别只信浏览器开发者工具里的“Elements”面板(它显示的是 JS 渲染后的结果) -
trainNumber替代flightNumber -
departureStation/arrivalStation替代机场字段,值应为车站名称(如"上海虹桥站"),不强制要求编码,但加stationCode(如"SHH")有助于识别 -
serviceClass可选填"first"/"second",但非必需;航班没有这个字段 - 时间字段命名一致(
departureTime、arrivalTime),格式要求也相同
关键属性必须用 itemprop 标出,且值要符合类型约束
flightNumber、departureAirport、arrivalAirport、departureTime、arrivalTime 这几个是 Google 飞行富结果必需字段。漏掉任意一个,即使 HTML 结构合法,也不会触发航班卡片展示。
注意值的格式要求:
动态内容需确保服务端渲染或 SSR 支持,纯 JS 注入常失效
Googlebot 当前对大量依赖客户端 JavaScript 渲染的 itemprop 值抓取不稳定——尤其是时间类字段随秒级更新时,容易抓到空值或过期值。
实操建议:
车次(火车)不能硬套 FlightReservation,得换 TrainTrip
标记高铁/动车要用 http://schema.org/TrainTrip,和航班是不同类目。混用会触发结构化数据警告,且无法获得铁路类富结果。
对应关键字段差异明显:
混合页面(如同时显示航班+高铁行程)需分块标记,不能共用一个 itemscope。











