把 SEO 组件接进 Discord:用自定义 embed 替换链接卡片
来源:dev.to — 2026-10-13
📋 概述
Discord 一直会自动为粘贴进频道的链接生成卡片,做法是抓取你服务器返回的 HTML、读取 head 里的 Open Graph 标签,它不执行任何 JavaScript,以 Discordbot 的身份自报家门,并把预览缓存约 30 分钟。现在它多了一个选项:页面里可以放一个 embed 组件,用带格式的文本、图库和按钮完全替换默认卡片。作者在自己的博客上实测了这套流程,并列出前置条件:站点必须走 HTTPS、OG 标签仍然必需(作为兜底)、必须服务端渲染、WAF 或限流后面要显式放行 Discordbot。JSON 载荷有两种放法:内联在 head 的 script 里,或指向同域的外部 JSON 文件,但外部文件的原始大小限制 3000 字节。根组件必须是 type 17 的 Container,载荷无效时 Discord 会退回 Open Graph 卡片。
🔑 核心要点
- 默认卡片来自服务端 HTML 里的 Open Graph 标签,Discord 不执行 JavaScript,客户端 JS 后加的标签等于不存在。
- 爬虫以 Mozilla/5.0 (compatible; Discordbot/2.0; ...) 自报身份,WAF 与限流必须显式放行。
- 预览缓存约 30 分钟,测试时在 URL 上加 ?v=2 可以强制刷新。
- 自定义 embed 的 JSON 可内联也可外链,但 外部 JSON 文件上限 3000 字节,图库加按钮的载荷内联空间更大。
- 新格式是叠加而非替换:载荷无效时 Discord 会退回 Open Graph 卡片,根组件必须是 type 17 的 Container。
💡 金句
如果页面上没有 embed 组件,Discord 显示的就只有上面那张卡片,不会更多。
👍 0
👎 0
← 返回 dev.to 首页