downloadurl 必须是直接触发下载的文件 url,不得为应用商店链接或重定向短链;多平台需为每个系统单独声明 softwareapplication 实体,严格匹配 downloadurl、operatingsystem 和 softwareversion;name 和 applicationcategory 须准确规范,避免无效值;校验需注意缓存、content-type 及标记语法一致性。

itemprop="downloadUrl" 必须指向可直接下载的文件地址
Google 搜索对 SoftwareApplication 的结构化数据有明确要求:downloadUrl 不是随便填个跳转页或应用商店链接,必须是用户点击后浏览器能直接触发下载行为的 URL(如 https://example.com/app-v2.1.0.dmg)。填错会导致富媒体摘要不展示下载按钮,甚至被结构化数据测试工具标记为“missing field”。
常见错误包括:
- 填了 App Store 或 Google Play 页面链接(
https://apps.apple.com/us/app/xxx),这类页面不满足downloadUrl语义 - 用了带重定向的短链(如
https://t.co/abc123),爬虫无法解析真实目标 - URL 返回 302 但最终响应头不含
Content-Disposition: attachment,部分搜索引擎会判定为“不可下载”
softwareVersion 和 operatingSystem 要匹配实际分发包
softwareVersion 和 operatingSystem 是 Google 识别多平台版本的关键字段。如果页面同时提供 macOS 和 Windows 版本,不能只写一个 SoftwareApplication 实体——必须为每个平台单独声明,且 downloadUrl、operatingSystem、softwareVersion 三者严格对应。
例如,同一页面内需并列两个 div:
<div itemscope itemtype="https://schema.org/SoftwareApplication"> <meta itemprop="softwareVersion" content="2.1.0"> <meta itemprop="operatingSystem" content="Windows"> <link itemprop="downloadUrl" href="https://example.com/app-2.1.0-setup.exe"> </div> <div itemscope itemtype="https://schema.org/SoftwareApplication"> <meta itemprop="softwareVersion" content="2.1.0"> <meta itemprop="operatingSystem" content="macOS"> <link itemprop="downloadUrl" href="https://example.com/app-2.1.0.dmg"> </div>
漏掉任一字段,或把 macOS 的 downloadUrl 错配到 Windows 的实体里,都会导致结构化数据校验失败。
name 和 applicationCategory 不能留空或泛用
name 必须是用户认知中该软件的正式名称(如 Obsidian),不能是“免费下载”“最新版”之类营销话术;applicationCategory 要选 Schema 官方定义的值,比如 BusinessApplication、DesktopApplication、GameApplication,填 Tool 或 App 会被忽略。
验证时容易被忽略的点:
-
applicationCategory区分大小写,desktopapplication无效 - 若软件跨平台且功能不同(如移动端含订阅入口,桌面端无),建议分开声明,避免
offers字段冲突 - Google 目前不支持在单个
SoftwareApplication中声明多个downloadUrl,多平台必须拆成多个实体
用 Google Rich Results Test 验证时注意缓存和 User-Agent
测试工具有时会缓存旧结果,尤其当你刚改完 HTML 但没清 CDN 缓存时,可能显示“未检测到结构化数据”。手动触发抓取前,先确认两点:
- 页面 HTTP 响应头中
Content-Type是text/html,不是application/xhtml+xml(后者 Schema 解析支持不稳定) - 确保
itemscope和itemtype在同一 HTML 元素上,比如<div itemscope itemtype="https://schema.org/SoftwareApplication">,不要拆成两行写 <li>避免在 <code><script type="application/ld+json"></script>里重复声明同一资源——JSON-LD 和 Microdata 混用可能触发冲突校验
真正麻烦的是:Google 对 SoftwareApplication 的富媒体展示仍属实验性支持,即使所有字段校验通过,也可能因页面权威性、历史收录表现等因素不显示下载按钮。上线后得盯三天 Search Console 的“增强型搜索结果”报告,而不是只看测试工具绿勾。











