Meta 標籤生成器

一個表單生成 SEO meta 標籤、Open Graph 屬性和 Twitter 卡片標記,包含 canonical 連結以及標題、描述的即時長度檢查。

用一個表單生成 SEO、Open Graph 和 Twitter 卡片標籤。 填一次欄位即可得到完整的 <head> 程式碼塊。標題和描述的長度會按搜尋引擎的截斷閾值即時校驗。

真正起作用的 meta 標籤

真正重要的那幾個

老教程裡列出的絕大多數 meta 標籤早已被忽略。仍然影響使用者所見的只有幾個:

  • <title> —— 頁面上最重要的單個元素。它是搜尋結果裡可點選的標題,也是瀏覽器標籤頁的文字。
  • <meta name="description"> —— 不是排名因素,但通常會成為標題下方的摘要,因此直接影響點選率。
  • <link rel="canonical"> —— 當同一內容可以通過多個地址訪問時,告訴搜尋引擎哪個 URL 才是權威版本。
  • Open Graph 與 Twitter 卡片屬性 —— 決定頁面被分享到社交平臺和聊天工具時的預覽卡片樣式。

明顯缺席的是 <meta name="keywords">。在經歷多年濫用之後,Google 於 2009 年確認不再將其用於排名。這裡保留它,僅僅是因為少數內部搜尋系統還會讀取。

長度限制看的是畫素,不是字元

搜尋引擎按固定畫素寬度截斷標題和描述,所以由窄字元組成的標題能容納更多文字,而全大寫的標題容納得更少。字元數只是實用的近似值:標題約 60 字元、描述約 160 字元,多數情況下能落在桌面端的顯示範圍內。移動端結果還要更窄。

超出限制並不是錯誤。描述只是一段摘要而非契約,當頁面中另一段文字更貼合查詢時,搜尋引擎照樣會自行改寫。把重要的詞放在前面,這樣即使被截斷,意思也能保住。

Open Graph,以及為什麼 Twitter 標籤通常可省

Open Graph 起源於 Facebook,如今已成為事實標準,LinkedIn、Slack、Discord、WhatsApp、iMessage 等絕大多數平臺都讀它。四個屬性承擔了幾乎全部工作:og:titleog:descriptionog:urlog:image

當自有標籤缺失時,Twitter 的解析器會回退到 Open Graph,因此只有當你希望在這個平臺上呈現不同的標題、描述或圖片時,才需要完整的 twitter:* 屬性。真正值得顯式設定的是 twitter:card,它決定採用大圖佈局還是緊湊縮圖佈局。

把預覽圖做對

這是大多數實現翻車的地方。必須使用絕對 URL —— 相對路徑在所有爬蟲裡都會失效。尺寸建議 1200 × 630 畫素,即 1.91:1 比例,正好填滿大卡片而不被裁切。檔案控制在 1 MB 以內,用 JPEG 或 PNG,並確保該 URL 無需登入、無需 Cookie、也不經過重定向鏈就能公開訪問。圖上的文字要大,因為卡片經常以遠小於原始尺寸的比例展示。

快取,以及你的修改為什麼沒生效

各大平臺都會激進地快取預覽,往往長達數天。更新標籤之後,舊卡片會一直顯示,直到快取過期或你通過平臺自帶的除錯工具強制重新整理。Facebook、LinkedIn、Twitter 都提供這類工具。如果重新整理後預覽仍然不對,檢查爬蟲能否真正訪問到頁面:登入牆、robots.txt 攔截、地域限制都會導致空白卡片。

開源說明:按 Open Graph 協議與 Twitter Cards 文件,使用純字串模板實現,未使用第三方庫。

常見問題

keywords 這個 meta 標籤對 SEO 還有用嗎?
沒用。在被系統性濫用之後,Google 於 2009 年公開表示不再將其用於排名,其他主流引擎也跟進了。寫上無害,少數內部或垂直搜尋系統仍會讀取,但它不會影響你的排名。
標題和描述應該寫多長?
標題約 60 字元,描述約 160 字元。實際截斷依據的是畫素寬度,所以這些數字只是近似值 —— 把重要的詞放前面,即使被截斷意思也還在。
已經有 Open Graph,還需要 Twitter 卡片標籤嗎?
通常不需要。缺少 twitter:* 時,Twitter 的解析器會回退到 Open Graph。例外是 twitter:card(它決定佈局),以及你確實想在該平臺展示不同內容的情況。
預覽圖應該多大?
1200 × 630 畫素是穩妥標準。它以 1.91:1 的預期比例填滿大卡片,在顯示小縮圖的平臺上縮放後也很乾淨。
為什麼還在顯示舊的預覽?
社交平臺會快取抓取到的後設資料,有時長達數天。用平臺的分享除錯工具強制重新抓取,並確認爬蟲能訪問頁面,不會撞上登入牆或重定向。
meta 標籤必須放在 head 裡嗎?
必須。放在 body 裡的標籤會被多數爬蟲忽略。它們還應出現在首屏 HTML 響應中 —— 由 JavaScript 後續注入的後設資料並不可靠,因為許多社交爬蟲根本不執行指令碼。