為什麼 Discord 連結預覽未顯示:原因和修復
Discord 未顯示連結預覽?
最常見的原因是嵌入被禁用、Open Graph 元資料遺失或無法訪問,或Discord 無法取得頁面或圖像。首先使用 OG 預覽 / Discord 連結檢查器 檢查 URL,然後完成下面的 Discord 端設定。
從這裡開始
- 確定您屬於哪種情況:查看別人的連結與擁有網站。
- 如果 no 在任何地方為您連結預覽,則幾乎總是客戶端或權限設定 - 而不是網站。
- 如果相同的 URL 在一台伺服器上預覽,而在另一台伺服器上沒有預覽,請檢查該頻道或角色上的 Embed Links。
- 如果 URL 從未向任何人預覽過,請取得
Discordbot會看到的內容:原始 HTML 中的標籤、HTTPS、無機器人挑戰。
如果您只是想查看其他人的鏈接
您無法修復其他網站的元標記。您只能變更 Discord 允許顯示 you 的內容,或該頻道允許自動嵌入的內容。
1.您的客戶隱藏了網站預覽
Discord 有一個使用者設定可以關閉自動網站嵌入。在桌面上,它位於用戶設定→聊天或文字和圖像下,標籤類似於「顯示嵌入和預覽網站連結」。如果關閉該功能,即使其他人都看到卡片,您也會看到普通的 URL。
2. 該訊息故意抑制嵌入
將 URL 括在尖括號中告訴 Discord 不要自動嵌入它:
<https://example.com/page>
如果訊息看起來像這樣,則每個人的預覽都會被抑制,而不是被破壞。
3. 渠道或角色否認Embed Links
Discord的權限EMBED_LINKS記錄為:具有此權限的使用者所傳送的連結將會自動嵌入。檢查頻道對@everyone的權限覆蓋、發布者的角色以及特定成員。此通道上的拒絕優於伺服器範圍內的允許。
如果 you 可以發布一個眾所周知的公共 URL(例如維基百科文章)並嵌入,則頻道沒有問題,原始網站才是問題所在。
4. 只有一個人受到影響
詢問同一頻道中的其他人。如果他們看到該卡而您沒有看到,則這是您的客戶端設定、過時的應用程式或本地快取 - 而不是 Open Graph。
如果您是網站所有者
Discord 使用其爬蟲取得 URL(Discordbot,通常為 Discordbot/2.0)。它讀取 HTML 元標記。它不運行您的客戶端 JavaScript。如果僅在 React 水合後注入標籤,Discord 會看到一個空殼。
1. 確認原始 HTML 中存在標籤
你至少想要:
<meta property="og:title" content="Your Title" />
<meta property="og:description" content="A short description" />
<meta property="og:image" content="https://yoursite.com/image.jpg" />
<meta property="og:url" content="https://yoursite.com/page" />
使用圖像的絕對 https:// URL。像 /og.png 這樣的相對路徑經常會失敗。使用Proovd或Discord連結預覽檢查器進行檢查 - 這些工具顯示爬蟲可以解析的標籤,而不是Discord自己的快取目前儲存的內容。
Discord 沒有發布完整的官方 OG 規範。實際上,它使用 Open Graph 標籤進行嵌入。不要單獨依賴twitter:image。
2. 確保Discordbot可以取得頁面和圖像
- HTML URL 和圖像 URL 應返回成功(通常為 200),而不是登入牆、403 或 Cloudflare「稍等一下…」挑戰。
- Bot Fight Mode和類似的WAF規則將爬蟲視為機器人。這會阻止 Discord,就像阻止Slack 和 Meta 一樣。請參閱Cloudflare阻止連結預覽。
- 在
robots.txt中允許 Discordbot 仍然值得做;原點前面的挑戰頁仍會隱藏標籤。
3. 圖像尺寸-我們實際知道的
Discord 並未在其開發者權限文件中發布嚴格的「最小 300×300 或無嵌入」規則。我們從 Proovd 中運行預覽得知:透過 HTTPS 使用大型、可存取的 JPEG 或 PNG。 1200×630是一個安全的尺寸,因為它也適用於其他平台。將檔案保持在典型上傳限制以下(Proovd 的 Discord 影像檢查標記檔案超過 8 MB)。
如果標題和描述顯示,但圖像沒有顯示,則圖像 URL 通常會被封鎖、奇怪地重定向,或不在初始 HTML 中。
4. 陳舊的Discord緩存
Discord 快取每個 URL 的嵌入。 Discord 沒有公共「Sharing Debugger」。更改標籤後:
- 發布稍微不同的 URL,例如
?v=2,因此 Discord 將其視為新的。 - 或刪除舊訊息並在網站實際提供新 HTML 後重新發布(使用檢視來源或curl 進行確認,而不僅僅是瀏覽器)。
5. Bot 和 Webhooks 是不同的問題
如果您希望 Discord 自動嵌入 URL,則發布 URL 的機器人仍需要在該頻道中使用 EMBED_LINKS。 API 內建的豐富嵌入是 JSON 有效負載,而不是 Open Graph。如果人工貼上的 URL 有效,而機器人的 URL 無效,請檢查機器人訊息標誌(包括抑制嵌入),而不是您的 og: 標籤。
Discord 連結檢查器與 Discord 伺服器檢查器
像是「Discord連結檢查器」、「Discord嵌入檢查器」和「Discord伺服器連結檢查器」這樣的搜尋查詢不是同一個作業:
- 連結/嵌入檢查器 — 在公共 URL 上檢查 Open Graph。這就是Proovd的Discord預覽頁的用途。
- 伺服器/邀請檢查器 — 邀請啟動映像和伺服器小工具是不同的Discord功能。本文並未聲稱 Proovd 檢查這些。
快速清單
- 同一頻道中的其他人是否看到該卡?
- 您的 Discord 用戶設定中是否啟用了網站預覽?
- 頻道是否授予發布者Embed Links?
- URL 是否包含在
< >中? og:title/og:image是否位於第一個 HTML 回應中(不僅在 JavaScript 之後)?- 非瀏覽器用戶端能否在沒有 403 質詢的情況下取得 URL?
- 更改標籤後是否使用新的查詢字串重新發布?
常見問題
為什麼我的連結在 Discord 上沒有顯示預覽?
分解問題。如果僅對您失敗,請修復用戶端或頻道嵌入權限。如果每個人都失敗,則 Discordbot 無法取得可用的 Open Graph 資料 — 缺少標籤、僅 JS 標籤、HTTP 影像或阻止取得。
如何在Discord上進行連結預覽?
將 Open Graph 標籤放入伺服器渲染的 HTML 中,使用 HTTPS 圖像 URL Discord 可以獲取,保留 Embed Links 允許用於海報,並貼上裸 URL(未包含在 < > 中)。
如何在不發佈到伺服器的情況下檢查 Discord 嵌入?
使用 Discord 連結預覽檢查器,例如 Proovd。它不會清除Discord的快取;它顯示爬蟲程式是否存在標籤。
先查看網站端
將 URL 貼到 Proovd 中,並將 Discord 卡片與 Slack、LinkedIn、X、WhatsApp 和 Reddit 進行比較。如果標籤看起來就在那裡,而Discord仍然沒有顯示任何內容,則剩下的工作是Discord設定或Discordbot被阻止。