Open Graph 预览,免费
预览您的链接在社交媒体上的展示效果。
预览
解析现有的 OG 标签
粘贴包含 OG meta 标签的 HTML 代码,以提取并预览。
关于 Open Graph
Open Graph(OG)meta 标签控制您的页面在 Facebook、LinkedIn、Slack、Discord 等平台分享时的展示方式。配置恰当的 OG 标签,搭配好的标题、描述和图片,可以显著提升社交分享的点击率。建议的 OG 图片尺寸为 1200 × 630 像素。
Open Graph 究竟是什么
Open Graph 协议是 Facebook 在 2010 年创建的,目的是把任何网页变成社交图谱中的一个「富对象」,一组结构化元数据,让其他应用(最早是 Facebook,如今还包括 LinkedIn、Slack、Discord、Microsoft Teams、iMessage、WhatsApp,以及其它数十种)在有人粘贴你的 URL 时读取并渲染出预览卡。官方规范在 ogp.me,这一协议事实上已成为 web 上链接分享的通用语言。
没有 OG 标签时,社交平台会抓取你的页面并猜测:它们挑一个标题、抓住第一张能找到的图片,就当作一张卡片。结果通常不是你想要的。有了 OG 标签,你掌控标题、描述和图片,这就是「精致链接」与「看起来坏掉的链接」之间的差别。
四个必需标签(根据 ogp.me)
Open Graph 官方规范定义了四个必需属性。要被认定为一个 Open Graph 对象,页面必须声明全部四个:
| 标签 | 作用 |
|---|---|
og:title | 你的对象在图谱中应当呈现的标题。 |
og:type | 你的对象的类型,通常一般页面用 website,博客文章用 article,电影条目用 video.movie,等等。 |
og:image | 应当在预览卡中代表对象的图片的 URL。 |
og:url | 对象的 canonical URL,即它在你站点上的永久地址。 |
推荐的可选标签包括 og:description(一两句话的摘要)、og:site_name(作为标签显示的站点名)、og:locale(语言和地区),以及图片尺寸提示 og:image:width / og:image:height / og:image:alt。包含尺寸提示能让社交客户端预先分配合适大小的空间,避免图片加载时的布局抖动。
Twitter / X Cards:同一思路,标签略有不同
X(原 Twitter)有自己的元数据命名空间,twitter:card、twitter:title、twitter:description、twitter:image、twitter:site、twitter:creator,但重要的是,当 Twitter 专属标签缺失时,X 会回退到 OG 标签。所以一个只发出 OG 标签的页面在 X 上仍然能得到一张卡。两者真正不同之处在于卡片类型:
twitter:card=summary,小方形缩略图、标题、描述。twitter:card=summary_large_image,卡片顶部为全宽图片。这是内容分享的现代默认,因为它在信息流里更能吸引视觉注意。app与player,分别用于应用安装和内嵌视频。
注意:cards-dev.twitter.com/validator 那个独立的 Twitter Card Validator 预览,X 已于 2022 年 8 月 2 日移除。当前验证一张卡片的方法是:在推文撰写器里开始一条新推文,粘上 URL,让预览渲染出来,你不必真的发出去。一些第三方工具(包括本工具)会近似呈现渲染后的卡片,这样你可以在上线前迭代。
真正可用的图片尺寸
没有单一完美尺寸,但 1200×630(1.91:1 宽高比)是最可靠的单一选择,在所有平台都不会被严重裁剪。各平台建议:
| 平台 | 建议尺寸 | 备注 |
|---|---|---|
| 1200×630(1.91:1) | 最低 200×200;低于 600×315 会显示为小缩略图。 | |
| 至少 1200×627 | 1.91:1 比例,JPG/PNG/GIF,最大 5 MB。 | |
| X (summary_large_image) | 1200×675(16:9) | 或 1200×600(2:1),两者都以全宽渲染。 |
| Slack / Discord | 直接读取 OG 标签 | 1200×630 效果很好;主体居中以经受住宽高比裁剪。 |
| 竖向(如 1000×1500) | Pinterest 信息流里 2:3 比例最佳。 |
把重要的文字和人脸放在图片中央附近,每个平台裁剪方式不同,放在角落的 logo 可能会被平台 UI 覆盖层挡住。
为什么你的卡片有时不显示
如果你已添加 OG 标签但预览仍然损坏或为空,常见嫌疑:
- 必须 HTTPS。Facebook 和大多数现代平台会拒绝
http://图片 URL。请通过 HTTPS 提供og:image。 - 图片不可公开访问。在认证之后、被 IP 白名单阻挡,或对平台抓取器返回 403。在隐私窗口打开图片 URL 来测试。
- 图片太小。低于平台最低值(Facebook 200×200、LinkedIn 1200×627),卡片会回退为小缩略图,或者根本没有图。
- 宽高比错误。1:1 的方形图作为
summary_large_image提交到 X,会被居中裁剪,常常裁得很糟。 - 缓存。社交平台会主动缓存你的 OG 元数据。修复标签后,去 Facebook 的 Sharing Debugger 点「Scrape Again」刷新;LinkedIn 的 Post Inspector 类似;X 在下次有人粘贴 URL 时才会获取变更。
- Robots.txt 阻挡了社交抓取器。确保
facebookexternalhit、Twitterbot、LinkedInBot、Slackbot等 user agent 能取你的页面和图片。 - 服务器对抓取器返回非 2xx。检查你的服务器日志中社交机器人 user agent 的记录。
- 相对图片 URL。
og:image必须是绝对 URL(https://yoursite.com/og.jpg),决不能是/og.jpg。
缓存问题
一旦社交平台抓取了你的页面,元数据会被缓存一段时间,社区流传的说法是 Facebook 和 LinkedIn 大约 7 天,虽然两家平台都没有正式记录确切的 TTL。更新 OG 标签不会自动刷新缓存。要强制重新抓取,使用官方工具:Facebook Sharing Debugger、LinkedIn Post Inspector。X 在 URL 下次被分享时获取新元数据。Slack 和 Discord 在 fetch 时根据 OG 标签刷新预览,所以比 Facebook 更快更新。
常见的 og:type 值
og:type 标签告诉社交平台页面代表什么类型的对象。大多数页面是 website(默认)或 article;垂直专属值能让平台渲染更丰富的卡片。出自规范:
website,一般页面的默认。article,博客文章、新闻。与article:published_time、article:author、article:section、article:tag配对。book,与book:author、book:isbn配对。profile,用于用户资料页。video.movie/video.episode/video.tv_show/video.other,用于视频内容。music.song/music.album/music.playlist/music.radio_station,用于音乐。
长度限制实务
没有平台对标题或描述长度有硬性上限,但每个平台过了某个点都会截断:
- 标题,保持在大约 60 字符以内,以便在所有平台上都安全;大约 70 字符在多数平台会被截断。关键信息放在前 50 字符。
- 描述,大约 155-200 字符以内才会被截断。移动端更少(约 100)。把关键信息放在前面。
- 图片 alt 文本,应当存在(
og:image:alt),为屏幕阅读器和注重无障碍的客户端服务;100 字符以内。
JSON-LD vs Open Graph(它们是不同的东西)
常见混淆:JSON-LD 结构化数据(用 schema.org 词汇)与 Open Graph 元标签做的是不同的工作。OG / Twitter Cards 控制社交分享预览,即有人把你的 URL 粘到 Slack 或 Facebook 时显示的内容。schema.org 的 JSON-LD 帮助 Google 解析你的页面以生成丰富的搜索结果,菜谱卡、产品信息、Google 搜索中的 FAQ 摘要。两者都建议使用,且互不取代。
常见错误
- 使用相对
og:imageURL。规范要求绝对 URL。相对路径会被悄悄丢弃。 - 所有页面都用通用站点 logo。OG 图片是你卡片的英雄,每个页面都值得有独特图片,理想情况下与页面内容相关联。
- 忘记
og:image:width和og:image:height。有些客户端会预先分配空间,缺少这些提示就会漏掉图片。 - 遗漏
summary_large_imagetwitter:card 类型。没有它,X 会默认使用更小的 summary 卡和方形缩略图,通常没那么吸引人。 - 把关键文字放在图片角落。不同平台裁剪不同。主体和重要文字应当放在中央 80% 的范围内。
- 更新了标签但没刷新缓存。每次更改后访问官方 Sharing Debugger / Post Inspector。
- 提交 HTTP 图片 URL。大多数平台拒绝非 HTTPS 图片;卡片会没有图片地出现。
- 仅使用
og:title和og:description。没有og:image,卡片在大多数平台上会渲染为只有稀疏文字的占位。
常见问题
为什么我的预览在不同平台上看起来不同?
每个平台都按自己的方式渲染相同的 OG 元数据,图片裁剪比例不同、标题尺寸不同、描述在不同点被截断。本工具近似呈现各平台的卡片;实际生产中的渲染可能略有差异。在依赖某张卡之前,务必先在最重要的平台上测试(Facebook Sharing Debugger、LinkedIn Post Inspector,以及 X 的 Tweet Composer)。
我的 OG 标签是对的,但 Facebook 还是显示旧预览,为什么?
Facebook 会主动缓存 OG 元数据,一旦它抓取了一个 URL,结果通常会保持几天。要强制重新抓取,把 URL 粘到 Facebook Sharing Debugger 并点「Scrape Again」。LinkedIn 通过 Post Inspector 也是同样的小技巧。
我同时需要 OG 标签和 Twitter Card 标签吗?
并不严格需要,Twitter 专属标签缺失时 X 会回退到 OG 标签。Twitter 专属标签的帮助在于选择卡片类型(twitter:card = summary_large_image)和归属(twitter:site、twitter:creator)。要在 X 上获得最大控制,两套都加;要最少投入,发出干净的 OG 标签并接受默认卡片类型即可。
我的数据有被上传到任何地方吗?
没有。预览完全在你的浏览器中根据你在表单里输入的内容渲染。没有服务器抓取,没有抓取你的真实 URL,没有记录你的草稿标签。你粘贴的图片 URL 会从其真实源加载到预览里(因为浏览器需要 fetch 图片来渲染),但 OG 标签的值本身从不离开页面。
我能交付的最简 OG 标签集合是什么?
四个必需标签加上 og:description:
<meta property="og:title" content="Your Page Title" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://yoursite.com/page" />
<meta property="og:image" content="https://yoursite.com/og.jpg" />
<meta property="og:description" content="A short summary of the page." />
为完整起见,加上 og:site_name、og:image:width、og:image:height 和 og:image:alt。如果你想让 X 使用全宽卡片,加上 twitter:card = summary_large_image。
Slack / Discord 是怎么生成预览的?
Slack 和 Discord 在消息里粘上 URL 时都直接读 OG 标签。Slack 使用 oEmbed 优先级链(oEmbed → OG → meta 标签);Discord 读 OG 加上一些自定义标签,包括一个控制 embed 左侧色条的 theme-color meta 标签。两者比 Facebook 刷新得快,通常在标签更新后下次粘贴同一 URL 时就会刷新。