S.EE 博客

链接预览详解:Open Graph 标签如何决定短链接分享后的样子

了解 Open Graph 和 Twitter Card 标签如何生成链接预览、短链接跳转会带来什么影响,以及如何修复图片或标题缺失、预览卡片未更新等问题。

David8 分钟阅读
链接预览详解

你把链接粘贴到团队频道或 LinkedIn 帖子里,等着预览卡片出现。结果,精心设计的图片和标题没显示出来,看到的却是被拉伸、裁切得很奇怪的 Logo、上个月的标题,甚至什么都没有。

链接预览正常时像魔法,出错时又让人摸不着头脑。实际上,它遵循一套简单的规则,主要基于名为 Open Graph 的标准。几乎所有预览问题,都能归结为几种可以修复的原因。

#链接预览是如何生成的

当你在 Slack、LinkedIn、Facebook、X、Discord、WhatsApp 或 iMessage 等平台分享 URL 时,平台会在后台访问这个地址。爬虫会下载页面的 HTML,读取 <head> 部分的特定标签。这些爬虫通常有各自的用户代理标识,例如 facebookexternalhit、LinkedInBot 或 Slackbot。

平台根据这些标签生成预览卡片,包含标题、简短描述、图片和网站名称。如果没有这些标签,平台只能自行猜测,通常会使用页面的 <title> 和找到的第一张图片,于是预览里就可能出现一个小小的 Logo,或一张不相关的横幅。

随后,平台会缓存预览。一个 URL 被抓取后,同一张卡片往往会沿用一段时间,即使你已经更新了页面。因此,很多人会遇到「明明修好了,显示还是不对」的情况。

#哪些 Open Graph 标签最重要

Open Graph 协议 由 Facebook 于 2010 年推出,如今几乎所有提供链接预览的平台都会读取它。它由一组 <meta> 标签组成,标签的 property 属性以 og: 开头。

核心标签如下:

html
<meta property="og:title" content="2026 年节日礼物指南">
<meta property="og:description" content="团队精选的二十款礼物,每款价格都低于 $50。">
<meta property="og:image" content="https://www.example.com/images/gift-guide-2026.jpg">
<meta property="og:url" content="https://www.example.com/gift-guide">
<meta property="og:type" content="website">
<meta property="og:site_name" content="示例商店">

og:title 和 og:description 控制显示的文字。标题尽量控制在 60 个字符左右,描述控制在 150 个字符左右,因为超过这个长度,大多数平台就会截断内容。

og:image 是影响用户互动最重要的标签。常用的图片尺寸是 1200 × 630 像素,宽高比为 1.91:1,在大多数平台都能很好地显示。请使用以 https:// 开头的绝对 URL,控制文件大小,并确保图片可以公开访问。

og:url 告诉平台页面的规范地址,帮助它们把同一内容的不同分享归到一起。

#X 和 Twitter Card 标签

X 除了使用 Open Graph,也有自己的标签,名称仍然叫 Twitter Cards。如果缺少 X 专用标签,大多数字段会回退到 Open Graph 的对应值。不过,有一个标签值得明确加上:

html
<meta name="twitter:card" content="summary_large_image">

没有它,X 可能只显示一张小方形缩略图,而不是大图卡片。如果希望 X 的预览与其他平台不同,也可以设置 twitter:title、twitter:description 和 twitter:image,不过多数网站直接沿用 Open Graph 的值。

#短链接如何传递预览信息

分享短链接时,平台爬虫会先请求短 URL。正常工作的短网址服务会返回指向目标地址的 HTTP 重定向,通常是 301 或 302。爬虫沿着重定向访问目标页面,再读取页面的 Open Graph 标签。

也就是说,短链接的预览就是目标页面的预览。只要目标页面的 Open Graph 标签设置正确,短链接就会自动显示合适的预览。修改短链接的目标地址后,等平台缓存刷新,预览也会随之改变。

前提是使用真正的服务器端重定向。爬虫通常不会运行 JavaScript,所以如果短网址服务采用 JavaScript 跳转、过渡广告页或「点击继续」页面,预览就会显示这个中间页面,而不是你的内容。可以用下文的 curl 命令检查重定向链。

#为什么链接预览显示错误或没有出现

页面没有 Open Graph 标签。平台只能自行猜测。至少应添加 og:title、og:description 和 og:image。

图片使用相对 URL,或无法公开访问。在很多平台上,og:image 填写 /images/card.jpg 这样的地址会失效。请使用完整的 https:// URL,并确认访问图片不需要登录,也没有受到防盗链或防火墙规则的限制。

爬虫被拦截。机器人防护、请求限流或防火墙可能阻止预览爬虫访问,也可能返回验证页面。检查安全设置,必要时放行已知的预览爬虫。

标签由 JavaScript 添加。如果网站通过客户端 JavaScript 渲染 <head>,不执行脚本的爬虫就看不到这些标签。对 meta 标签使用服务器端渲染或静态生成,可以解决这个问题。

标签在页面中出现得太靠后。有些爬虫只读取 HTML 文档的前面一部分。把 Open Graph 标签放在 <head> 靠前的位置,排在较大的内联脚本或样式之前。

平台缓存了旧版本。如果链接第一次分享后你才修复标签,平台可能仍会显示旧卡片,直到缓存刷新,或你强制重新抓取。

#智能跳转和 A/B 测试也会影响预览

有些短链接功能会根据访问者的情况决定跳转地址。这对用户很有用,却偶尔会让爬虫抓到意料之外的内容。

使用按地理位置定向的链接时,爬虫所在的位置决定了它看到哪个目标页面。爬虫通常运行在数据中心,而且经常位于美国。因此,如果一个链接把美国访客导向一个页面,把其他访客导向另一个页面,所有人看到的预览都会是美国页面的版本。

按设备定向也是同样的道理。爬虫看起来不像 iPhone 或 Android 手机,因此通常会访问你设置的桌面端或默认目标页面。

使用链接轮换进行分流测试时,爬虫会看到恰好被分配到的目标页面,然后平台就会缓存这个预览。如果不同版本的 Open Graph 图片不一样,分享卡片可能与多数人实际打开的页面不一致。

简单的解决办法是,让定向或轮换链接的所有目标页面使用相同的 Open Graph 标题、描述和图片,或者至少让这些内容适合所有受众。

#如何测试和刷新链接预览

使用平台自己的工具。Facebook 的 Sharing Debugger 会显示爬虫实际看到的内容,并允许你强制重新抓取。LinkedIn 的 Post Inspector 也提供同样的功能。对于其他平台,通用的 Open Graph 预览工具可以帮助你判断 URL 大致会如何显示。

也可以在命令行检查重定向链。下面的命令通过 HEAD 请求检查。有些网站对 HEAD 和 GET 的处理不同,因此,如果结果出乎预期,再用 GET 请求确认一次:

bash
curl -sIL -A "facebookexternalhit/1.1" https://s.ee/example
# 用 GET 请求查看整条重定向链的响应头,丢弃响应正文:
curl -sS -L -D - -o /dev/null -A "facebookexternalhit/1.1" https://s.ee/example

理想情况下,应该只经过一次重定向,然后目标页面返回 200 OK。重定向链过长、使用 JavaScript 跳转,或者最终返回 403,都说明预览可能有问题。

修复后,如果平台支持,就强制重新抓取;其他平台则要等缓存过期后再测试。新的测试 URL 可以帮助判断是否是缓存问题,但平台可能以分享的短 URL 或规范 URL 作为缓存键。只修改目标地址的查询字符串,不一定能刷新已有卡片;平台提供调试工具时,应优先使用。

#链接预览快速检查清单

分享重要链接之前,确认目标页面在 <head> 靠前的位置包含 og:title、og:description、og:image 和 og:url,并把 twitter:card 设置为 summary_large_image。图片应为 1200 × 630 像素,使用 HTTPS 绝对 URL,并且可以公开访问。

确认短链接只经过一次服务器端重定向,预览爬虫没有被机器人防护拦截,定向或轮换链接的所有目标页面都使用一致的预览标签。正式分享前,再放进预览工具里检查一次。

#总结

链接预览来自目标页面的 Open Graph 标签,由各个平台的爬虫抓取后缓存。只要短链接使用正确的服务器端重定向,预览信息就能自动传递。因此,需要处理的是目标页面:设置正确的标签,为图片使用尺寸合适的绝对 URL,让爬虫能够访问,并保持定向和轮换链接各个目标页面的标签一致。

预览显示不对时,检查重定向链、确认爬虫实际看到的内容,再强制刷新。

感谢阅读!如果你希望用自己的品牌域名创建短链接,并统计各个渠道的点击数据,S.EE 将短网址、自定义域名、二维码和个人主页整合在同一平台。

准备开始了吗?创建你的第一个链接,或查看价格,找到适合自己的方案。

#关于链接预览和 Open Graph 标签的常见问题

##什么是 Open Graph 标签?

Open Graph 标签是网页 <head> 中的一组 <meta> 标签,用来告诉平台在分享页面时应显示什么标题、描述和图片。它们由 Facebook 推出,如今大多数生成链接预览的平台都会读取这些标签。

##为什么链接预览没有显示正确的图片?

常见原因包括缺少 og:image 标签、图片 URL 是相对地址或无法公开访问、图片太小或比例不对、爬虫被机器人防护拦截,以及平台仍在使用缓存的旧预览。可以通过平台的调试工具查看爬虫实际抓到了什么。

##短链接会导致链接预览失效吗?

如果短网址服务使用正确的服务器端重定向,就不会。平台爬虫会跟随重定向,读取目标页面的 Open Graph 标签。JavaScript 跳转和中间过渡页面则可能导致预览失效。

##Open Graph 图片应该用多大尺寸?

最常用的是 1200 × 630 像素,宽高比为 1.91:1,在大多数平台都能很好地显示。请通过 HTTPS 绝对 URL 提供图片。

##如何刷新 Facebook 或 LinkedIn 的链接预览?

使用 Facebook 的 Sharing Debugger 或 LinkedIn 的 Post Inspector 重新抓取 URL。其他平台会按照各自的周期刷新缓存中的预览。

##为什么按地理位置定向的链接会显示错误的预览?

预览爬虫通常运行在某一个地区的数据中心,因此只能看到面向该地区的目标页面。让定向链接的所有目标页面使用相同的 Open Graph 标签,就能保持预览一致。

继续阅读

如何进行 A/B 测试

如何用短链接对落地页做 A/B 测试

你做了两个版本的落地页:一个用醒目的标题开场,另一个先展示产品图片。两个看起来都不错,但到底哪个……

7 分钟阅读