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 后续注入的元数据并不可靠,因为许多社交爬虫根本不执行脚本。