Open Graph 标签设置了但分享时还是不显示预览图怎么办?
我在网站首页加了 Open Graph 的 meta 标签,包括 og:image,本地测试也确认图片路径是对的,用的是绝对 URL。但用微信或 Telegram 分享链接时,预览图要么不显示,要么显示成网站 favicon。是不是我漏了什么关键配置?
这是我现在用的标签:
<meta property="og:image" content="https://example.com/images/og-preview.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:title" content="我的网站标题" />
<meta property="og:description" content="这里是描述内容" />
图片尺寸是 1200×630,格式是 jpg,服务器也返回了正确的 Content-Type。难道还需要额外验证或者缓存清理?
先说最可能的锅:微信、Telegram、Facebook 这些平台都会缓存 OG 信息,你本地测试通过了,但平台那边拿的还是旧数据。你得用各自的工具刷新缓存:
微信去微信开发者工具的「公众号网页调试」里刷新,Telegram 找 @WebpageBot 机器人发 /clear 指令,Facebook 用它的 Sharing Debugger 工具。
然后你现在的标签缺了几个关键属性,补上:
og:url 必须填,而且要填 canonical URL,就是页面唯一的标准地址。og:type 填 website,这两个缺了有些平台会直接不认。
还有几个容易踩的坑检查一下:
图片必须能被爬虫直接访问,不能有 referer 限制、登录验证或者防火墙拦截。Telegram 和微信的爬虫 User-Agent 跟浏览器不一样,有些服务器配置过头的防盗链会把它们挡掉。
如果用了 CDN,确保 CDN 那边没有缓存旧的 meta 标签。
最后再用对应平台的调试工具跑一遍,看它们实际抓到了什么数据,一目了然。