Slack OG 图片不显示:独立站排查清单
原文:https://indieseek.co/zh/blogs/slack-og-image-not-showing-debug-checklist/
Slack OG 图片不显示:独立站排查清单
快速结论
如果你的页面在浏览器里看起来完全正常,但分享到 Slack 时就是没有预览图,问题通常不是“Slack 很玄学”,而是下面四类原因之一:
- 页面 HTML 里没有稳定暴露 og:image;
- Slackbot 无法公开抓到图片;
- 图片路由返回了不合适的 header、重定向或响应内容;
- Slack 还在展示旧缓存。
对大多数独立站来说,最快的排查顺序是:
先确认原始 HTML 里的 og 标签 -> 再直接抓 og:image 链接 -> 检查状态码、content-type、大小和重定向 -> 确认图片链接是公开且稳定的 -> 考虑 Slack 缓存后再复测这篇适合谁
这篇适合自己做产品页、博客页、工具页、Product Hunt 素材页的独立开发者和小团队。你可能用的是静态页面、框架自动生成 metadata,或者动态生成的 OG 图片接口。
最常见、也最浪费时间的情况就是:在一个平台里预览正常,换到 Slack 就变成空卡片、旧图,或者根本没有图。
为什么现在值得写
2026 年 7 月 3 日,一个 Wax Spinner 的 Show HN 帖子提到他们在做分享卡片时,Slack 是最难调通的平台之一。这个信号有价值,不是因为它是一条新闻,而是因为它准确击中了独立开发者的高频问题:页面已经上线,图也做了,但分享预览就是不稳定。
Slack 官方文档已经说明了问题的稳定部分。Slack 的链接预览不是用用户浏览器去读页面,而是由 Slackbot 从 Slack 侧抓取。Slack 还公开了 Slackbot-LinkExpanding 和 Slack-ImgProxy 等抓取代理,并说明 unfurl 结果会缓存大约 30 分钟。
这意味着,只在浏览器里点开页面检查,往往会得到误导性的“看起来没问题”。
更实用的思路是:把 Slack 预览问题当成“抓取与交付链路问题”,而不是视觉设计问题。
实操排查流程
1. 先检查原始 HTML
先确认页面源码里真的有你想让 Slack 看到的标签:
curl -I https://example.com/post curl -L https://example.com/post | rg 'og:image|og:title|og:description'你需要的是 HTML 里直接可读、完整的绝对地址 og:image,而不是必须等浏览器执行完前端代码后才出现的标签。
如果你的 OG 标签依赖客户端渲染,先修这个问题。
2. 直接抓图片链接
把 og:image 的准确 URL 拿出来,当成独立资源测试:
curl -I https://example.com/og-image.jpg curl -L https://example.com/og-image.jpg -o /tmp/og-test file /tmp/og-test这一层至少要确认:
- 返回 200 OK;
- 最终 URL 仍然是 HTTPS;
- content type 是正常图片类型;
- 不依赖 cookie、登录态或签名会话;
- 不经过多余的重定向跳转。
如果图片资源本身就不稳定,分享预览一定也不稳定。
3. 检查路由稳定性和抓取前提
Slack 官方文档说明的是“Slack 从自己这边抓”。Wax Spinner 那个 HN 案例提供的则是很有价值的现场经验:动态图片路由很容易被一些浏览器里不明显的问题影响,比如全局中间件、CDN 规则、统一安全 header,或者图片路由被当成应用接口而不是公开静态资源处理。
可以按这个表去审查:
- 图片 URL 是不是干净、稳定、可长期访问;
- 路由是否完全公开,不依赖用户会话;
- 重定向后是否还能正确拿到最终图片;
- 全站默认响应规则是否误伤了图片路由;
- 机器人访问图片路由时,行为是否和浏览器一致。
这并不是说动态 OG 图片不好,而是说它必须表现得像一个稳定的公开文件。
4. 检查的不只是“能打开”,还有“适不适合做预览图”
Google 的图片文档和 Discover 文档虽然不是 Slack 专用,但对图片质量的要求很值得借用:
- 图片尽量足够大;
- 图片本身可抓取;
- 图片和页面主题强相关;
- 不要只用一个很小的 logo 充当分享图。
对产品页或文章页来说,一张尺寸合理、主题明确的社交分享图,通常能同时提升多个平台的预览稳定性。
5. 用 IndieSeek 现有工具做二次确认
在怪 Slack 之前,先确认 metadata 本身没有问题。
- 用 OG Image Checker 检查图片 URL 和预览基础条件。
- 用 Meta Tag Checker 一次性看 title、description、canonical 和 OG 标签。
这两个内部工具正好对应这个问题最常见的两层原因:一层是 metadata 配置,另一层是图片交付。
一个够用的决策树
是不是所有平台都展示错图? 是 -> 先修页面 metadata。 否 -> 继续。 Slack 是完全没有图,还是图不对? 没有图 -> 直接抓 og:image。 图不对 -> 先看是否是旧缓存,再看是否抓到了旧 URL。 图片 URL 是否返回 200、公开可访问、类型正常? 否 -> 先修图片资源路由。 是 -> 继续。 这个图片路由是否依赖登录态、签名参数或脆弱重定向? 是 -> 改成稳定公开链接。 否 -> 继续。 是不是刚改完图就立刻重发链接? 是 -> 先等 Slack 缓存刷新。 否 -> 继续检查中间件和响应头。常见错误
第一个错误,是只在浏览器里验证。Slack 用的是自己的抓取链路,“我本地能打开”并不能说明 Slack 一定能拿到。
第二个错误,是用相对路径、晚注入标签,或者依赖客户端渲染才出现的 OG 信息。抓取器更需要稳定 HTML。
第三个错误,是把图片放在一个“像应用接口一样复杂”的路由里,而不是当成一个公开稳定资源来交付。
第四个错误,是以为“有图就行”。小 logo、私有 CDN 地址、重定向很不稳定的图片,即使能打开,也不一定适合作为分享图。
第五个错误,是刚替换图片就立刻重复分享同一个链接,没有考虑 Slack 官方说明里的缓存窗口。
FAQ
Slack 预览会读取我的浏览器状态吗?
不会。Slack 官方说明的是服务端抓取,由 Slackbot 发起请求。
动态生成的 OG 图片还能不能用?
可以,但它必须表现得像一个稳定公开文件:状态码正常、无需登录、重定向可预期、最终响应就是标准图片。
这只是 Slack 的问题吗?
不是。只是 Slack 往往把问题暴露得最明显。你把这条链路清理干净后,其他社交预览通常也会一起变稳定。
为什么还要参考 Google 的图片文档?
因为虽然 Google 和 Slack 不是同一套系统,但“大图、可抓取、与页面主题一致”本身就是稳妥基线,对搜索和分享都成立。
来源和相关资源
- Slack link unfurling docs: https://api.slack.com/reference/messaging/link-unfurling
- Slack robots and crawler user agents: https://api.slack.com/robots
- Google image SEO best practices: https://developers.google.com/search/docs/appearance/google-images
- Google Discover image guidance: https://developers.google.com/search/docs/appearance/google-discover
- Google Article structured data reference: https://developers.google.com/search/docs/appearance/structured-data/article
- OG Image Checker
- Meta Tag Checker
- Show HN: Wax Spinner, a "now playing" social app for vinyl record collectors (2026-07-03): https://news.ycombinator.com/item?id=48774122

浙公网安备 33010602011771号