Open Graph 预览,免费

预览您的链接在社交媒体上的展示效果。

预览

example.com
页面标题
页面描述将显示在此处…
example.com

解析现有的 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:cardtwitter:titletwitter:descriptiontwitter:imagetwitter:sitetwitter:creator,但重要的是,当 Twitter 专属标签缺失时,X 会回退到 OG 标签。所以一个只发出 OG 标签的页面在 X 上仍然能得到一张卡。两者真正不同之处在于卡片类型:

注意:cards-dev.twitter.com/validator 那个独立的 Twitter Card Validator 预览,X 已于 2022 年 8 月 2 日移除。当前验证一张卡片的方法是:在推文撰写器里开始一条新推文,粘上 URL,让预览渲染出来,你不必真的发出去。一些第三方工具(包括本工具)会近似呈现渲染后的卡片,这样你可以在上线前迭代。

真正可用的图片尺寸

没有单一完美尺寸,但 1200×630(1.91:1 宽高比)是最可靠的单一选择,在所有平台都不会被严重裁剪。各平台建议:

平台建议尺寸备注
Facebook1200×630(1.91:1)最低 200×200;低于 600×315 会显示为小缩略图。
LinkedIn至少 1200×6271.91:1 比例,JPG/PNG/GIF,最大 5 MB。
X (summary_large_image)1200×675(16:9)或 1200×600(2:1),两者都以全宽渲染。
Slack / Discord直接读取 OG 标签1200×630 效果很好;主体居中以经受住宽高比裁剪。
Pinterest竖向(如 1000×1500)Pinterest 信息流里 2:3 比例最佳。

把重要的文字和人脸放在图片中央附近,每个平台裁剪方式不同,放在角落的 logo 可能会被平台 UI 覆盖层挡住。

为什么你的卡片有时不显示

如果你已添加 OG 标签但预览仍然损坏或为空,常见嫌疑:

缓存问题

一旦社交平台抓取了你的页面,元数据会被缓存一段时间,社区流传的说法是 Facebook 和 LinkedIn 大约 7 天,虽然两家平台都没有正式记录确切的 TTL。更新 OG 标签不会自动刷新缓存。要强制重新抓取,使用官方工具:Facebook Sharing DebuggerLinkedIn Post Inspector。X 在 URL 下次被分享时获取新元数据。Slack 和 Discord 在 fetch 时根据 OG 标签刷新预览,所以比 Facebook 更快更新。

常见的 og:type 值

og:type 标签告诉社交平台页面代表什么类型的对象。大多数页面是 website(默认)或 article;垂直专属值能让平台渲染更丰富的卡片。出自规范:

长度限制实务

没有平台对标题或描述长度有硬性上限,但每个平台过了某个点都会截断:

JSON-LD vs Open Graph(它们是不同的东西)

常见混淆:JSON-LD 结构化数据(用 schema.org 词汇)与 Open Graph 元标签做的是不同的工作。OG / Twitter Cards 控制社交分享预览,即有人把你的 URL 粘到 Slack 或 Facebook 时显示的内容。schema.org 的 JSON-LD 帮助 Google 解析你的页面以生成丰富的搜索结果,菜谱卡、产品信息、Google 搜索中的 FAQ 摘要。两者都建议使用,且互不取代。

常见错误

  1. 使用相对 og:image URL。规范要求绝对 URL。相对路径会被悄悄丢弃。
  2. 所有页面都用通用站点 logo。OG 图片是你卡片的英雄,每个页面都值得有独特图片,理想情况下与页面内容相关联。
  3. 忘记 og:image:widthog:image:height有些客户端会预先分配空间,缺少这些提示就会漏掉图片。
  4. 遗漏 summary_large_image twitter:card 类型。没有它,X 会默认使用更小的 summary 卡和方形缩略图,通常没那么吸引人。
  5. 把关键文字放在图片角落。不同平台裁剪不同。主体和重要文字应当放在中央 80% 的范围内。
  6. 更新了标签但没刷新缓存。每次更改后访问官方 Sharing Debugger / Post Inspector。
  7. 提交 HTTP 图片 URL。大多数平台拒绝非 HTTPS 图片;卡片会没有图片地出现。
  8. 仅使用 og:titleog: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:sitetwitter: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_nameog:image:widthog:image:heightog: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 时就会刷新。

相关工具