LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

[点晴永久免费OA]普通链接发微信,怎么变成卡片?

admin
2026年11月5日 10:1 本文热度 51

同一串网址,直接发是文本,扫码进去再分享就是卡片。我抓了那个站的源码,发现卡片缺的那张图,页面上本来就没写。差别不在技术,在微信 2021 年那两次公告:只开放了访问,没开放传播。

先给个能直接用的结论:一串普通网址,在微信里发给好友时是可以变成卡片的——带标题、带一句描述、带封面图,占一整条消息,比一行绿字体面得多。不用公众号,不用接任何接口,改网页开头几行就够。

这个事我是从一个反常现象入手的。同一个 https://xinlve.com,我直接粘贴发出去,收到的是一行绿色网址;把它做成二维码、扫码进去再点分享,收到的却是一张完整的卡片。

为了搞清这个差别,我把这个站的源码抓下来看了一眼:<head> 里标题和描述都写得很全,唯独少了一张图。而那张卡片上,图片位置正好是一个灰色占位符。

这两件事是同一件事。结论是:

微信里那张卡片,不是"发"出来的,是"打开"出来的。

同一串网址,两种样子

这个差别可以拆成两半。

第一半:网址直接粘进聊天框发出去,收到的是一行绿色网址。微信有时会在它下面附一张预览,但那条消息的本质仍然是"一段文字"——把它再转给第三个人,出去的还是文字。

第二半:把同一个网址做成二维码,扫码进入网页,再点右上角"分享给朋友"。这一次收到的是一张卡片:没有网址文字,整条消息就是那张卡,点哪都进网页。

地址一样,页面一样。差别只在分享这个动作是从哪儿发起的。

这件事不是微信抽风,也不是草稿二维码有什么魔力。它背后是一条很清楚的分界线,而且这条分界线不在技术上,在规则上。

值得写下来的原因也在这儿:它不是个 bug,正好相反,它是一条被设计出来的规则,而且几乎没人把它的边界说清楚过。

卡片的三样东西,来自网页的开头

微信要给一个网页生成卡片,需要三样信息:标题、描述、缩略图。

这三样不需要开发、不需要公众号、不需要 JS-SDK,也不需要后端签名。它们就写在网页 HTML 最上面的 <head> 里,用的是十几年前 Facebook 定的一套标签,叫 Open Graph。

我把 xinlve.com 的源码抓下来,<head> 里是这样:标题有,和卡片上的一字不差;描述有,和卡片上的一致;缩略图没有——它缺了 og:image 这一行。

所以那张卡片能显示标题和描述,图片位置只能空着。

这也顺带解释了一件容易被忽略的事:微信卡片上那个灰色方块,不是加载失败,是这个网站压根没告诉微信该放哪张图。

卡片长什么样,取决于网站作者在 <head> 里写了什么,不取决于微信。

那为什么从聊天里点开再转发,还是不行

到这一步,最常见的解释是"因为直接粘贴是纯文本,微信没抓取"。

这个解释对了一半,但它解释不了更奇怪的那一半:从聊天里点开链接,人已经在微信内置浏览器里了,为什么转发出去还是一串字符串?

真正的原因在政策层,不在技术层。

2021 年 9 月 17 日,微信发布《微信外部链接内容管理规范》调整声明,第一阶段内容是:

“

在确保信息安全的前提下,用户升级最新版本微信后,可以在一对一聊天场景中访问外部链接。

2021 年 11 月 29 日的更新说明,措辞还是同一个:

“

在点对点聊天场景中将可直接访问外部链接。

注意这两个字:访问。

从头到尾,微信开放的都只是"能不能打开",从来没说过"能不能转发"。结果就是:外链在微信里能打开,但打开之后想再传出去,那张卡片会被收走,只留一行网址。

多位开发者在微信开放社区里记录过同一件事:从聊天窗口点开链接再转发,出去的是明文链接;只有换一种方式进入页面,分享出去才带卡片。这条限制在微信 2021 年放开外链访问之后才出现——开放访问和收回传播,是同一次调整的两面。

哪几个门能拿到卡片

按公开的开发者实测,能生成卡片的入口有四类:

入口
怎么做
卡片效果
扫码
把网址生成二维码,微信扫一扫打开,再点右上角分享
有效(本文配图即为实测)
收藏
打开网页 → 右上角"…" → 收藏 → 从"我-收藏"里打开 → 分享
有效
公众号菜单
把链接挂在公众号自定义菜单,从菜单点进去再分享
有效
发给公众号
把链接发给自己的公众号,点开后再分享
有效
搜一搜
链接发到文件传输助手 → 长按选"搜一搜" → 点"访问网页" → 再分享
有效
聊天里点开
直接在对话里点链接 → 再转发
无效,退化为网址
直接粘贴
复制网址粘进输入框
无效,纯文本

五个有效入口,共同点只有一条:都不是"从聊天消息里点进去的"。

微信把"聊天里的一条链接消息"和"浏览器里的一个网页"当成了两个东西。前者是一条可以转发的消息,后者是一个可以分享的页面。

更具体一点:微信里的每条消息都带一个类型。粘进输入框的那串网址,被存成一条文本消息;从网页点分享,被存成一条图文消息。转发的时候,微信转发的是"这条消息",不是"这个网址"——文本消息转出去还是文本,图文消息转出去还是图文。

所以问题从来不是"微信抓不到网页"。从聊天里点开链接,页面确实已经加载了,微信也确实读到了它的标题。问题在于:手上那条待转发的东西,本来就是一条文本消息,点开网页不会改变它的类型。

扫码之所以行,是因为扫的是一个页面地址,微信手里没有对应的聊天消息,分享时只能走"分享当前页面",于是生成了图文消息。

顺带说一句朋友圈:从网页里点"分享到朋友圈"是正常的,但朋友圈对外链的展示是纯文字加一张小图,不会变成聊天里那种卡片。那是另一套渲染规则,跟这篇说的不是一回事。

还有一个现实问题:这套行为微信从来没出过正式文档,各版本之间也有出入。所以照上面的方法做了却不灵,先别怀疑方法——多半是版本差异,或者这个链接之前已经被抓取过、缓存住了。

想发卡片,按这个顺序试

先说一件事,免得白折腾:公众号文章的链接,天生就是卡片。

因为那篇文章存在微信自己的库里,标题、摘要、封面都是发布时填的字段,微信不需要去抓任何网页。绕这么多路,本质上是在给一个"不属于微信的网页"临时借一张身份证——借到了能进门,但户口不在微信这儿。

这也解释了为什么所有绕过方案都有点别扭:它们都在借别人的入口。

如果手里正好有一串网址,想让它以卡片形式发出去,从省事到麻烦排一下:

第一,扫码。 把网址丢进草稿二维码这类工具生成二维码,微信扫一扫打开,右上角分享。这也是我自己一直用的那条,最不依赖账号条件——不需要公众号、不需要备案。

第二,收藏。 在微信里打开网页,右上角"…"→ 收藏,然后去"我 → 收藏"里打开它,再分享。适合临时要发一两个链接的人,不用生成二维码。

第三,搜一搜。 把链接发给文件传输助手,长按这条消息选"搜一搜",从结果里点"访问网页",再分享。这条路的好处是不用离开微信。

如果站是自己的,怎么办。

别绕,直接去补 <head>:

<meta property="og:title" content="页面标题">
<meta property="og:description" content="一句话描述">
<meta property="og:image" content="https://你的域名/share.png">

三个坑,都是别人踩出来的:

  • og:image 必须是 https:// 开头的绝对地址,相对路径微信抓不到。
  • 图片建议 478×478 正方形、JPG 或 PNG、2MB 以内。聊天列表里的缩略图是方的,横图会被居中裁掉两边。这个尺寸是社区实践值,微信文档里没有明文规定。
  • 改完之后,同一个链接可能还是旧样子——微信会缓存抓取结果。缓存是绑在 URL 上的(含参数),所以最快的验证方式不是"再发一次",是给链接加一个没用的参数,比如 ?v=2,让微信当成一个新地址重新抓一遍。图换了、卡片还是旧图,用这招也能治。

补完标签,还有个前提:这个链接得先被"打开过一次"。粘贴进聊天框的那条,仍然是纯文本。

想先判断一个站缺哪一样,不用装工具。电脑上打开页面、右键"查看网页源代码",搜 og: 两个字符:搜到 og:title 却没有 og:image,就是缺图;一个都搜不到,三样全缺。(手机端 iOS 看不了源码,用电脑最快。)

我把自己那个站改了一遍

上面这些不是纸上推演。我写了个小脚本去读线上页面,在还没改的时候,输出是这样:

检查 https://xinlve.com
首页:HTTP 200,103186 字节

—— 卡片的三个标签 ——
  ✓ og:title    北京心略智能科技有限公司 - 专业的心理健康服务
  ✓ og:description  提供专业的心理筛查、课程、静观服务…
  ✗ og:image 缺失(卡片图片位置会是灰块)

最后那行,和截图里那个灰色占位符是同一件事。

改法只有一处。这个站是 Next.js,在 app/layout.tsx 的 metadata 里加一个 images 字段:

openGraph: {
title: '……',
description: '……',
url: 'https://xinlve.com',
siteName: '北京心略智能科技有限公司',
locale: 'zh_CN',
type: 'website',
images: [{
    url: 'https://xinlve.com/og-image.png',
    width: 478,
    height: 478,
    alt: '心略心理 - 专业的心理健康服务',
  }],
},

配套做一张 478×478 的图,放在 public/og-image.png——放 public 目录,Next 会直接把它映射到 https://xinlve.com/og-image.png,不需要走任何路由。我做的那张是品牌橙底、中间放 logo、下方一行域名,38KB。

如果站不是 Next.js,是纯静态 HTML,把下面这七行放进每个页面的 <head>,不需要框架、不需要构建、不需要 JS-SDK:

<meta property="og:title" content="北京心略智能科技有限公司 - 专业的心理健康服务">
<meta property="og:description" content="提供专业的心理筛查、课程、静观服务,结合AI心理咨询师和AI数字人技术。">
<meta property="og:type" content="website">
<meta property="og:url" content="https://xinlve.com/">
<meta property="og:image" content="https://xinlve.com/og-image.png">
<meta property="og:image:width" content="478">
<meta property="og:image:height" content="478">

纯 HTML 这条路上有个坑值得单说:如果站是 Vue、React 这类前端渲染的 SPA,这七行必须写死在 index.html 的源码里,不能在组件挂载后用 JS 插入。微信的抓取器不执行 JavaScript,它看到的只是服务器吐出来的那份 HTML,页面上跑完的 DOM 它拿不到。同理,用框架的模板就别只在一处写死——每个会被单独分享的页面,都要有自己那一份标题和描述。

改完部署,同一个脚本再跑一遍,输出变成这样:

✓ og:image    https://xinlve.com/og-image.png
  状态码 200|类型 image/png|大小 38 KB
  尺寸 478×478
  ✓ 图片可匿名访问
  ✓ 是正方形,缩略图不会被裁

再在微信里发一次,卡片上的灰块换成了橙色品牌图。

这是微信里的原始截图,没有加工:11:43 那条是直接粘贴的网址,下面跟一张灰图卡片;13:13 那条是分享出去的,卡片自己带上了图,也不再挂着网址文字。

两种形态同时存在,正好印证前面的判断——卡片带不带图,取决于微信抓到了什么;消息长什么样,取决于从哪个入口发起。

这件事的真正含义

回到最开始那个问题:为什么会有这种差异?

技术上的答案是:卡片来自网页 <head>,不来自发送动作;三个标签写全了就有卡片,缺一个就缺一块。

但更值得记住的是另一层:微信把"能访问"和"能传播"拆成了两件事。

开放外链访问,是 2021 年那场互联互通的要求;但一张卡片在聊天里被转来转去,意味着这个外链获得了微信的分发能力——这件事微信没有开放,也不会轻易开放。

所以那五个入口,本质上是五个"微信认可其被用户主动打开、而不是被塞进聊天流"的场景。扫码,是自己主动想看;从收藏里打开,是之前存过。而聊天里的链接转发,是别人塞过来的,微信不管。

理解这一层,就能预判下一个问题:不是"怎么让链接变卡片",而是"这份内容值不值得被微信允许传播"。

对普通人来说,扫码这一步够用了。对做站的人来说,那几行标签是唯一能自己控制的部分——剩下的,取决于那个站有没有被人真正打开过。


阅读原文:点击这里​


该文章在 2026/11/5 10:02:32 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-1  粤公网安备44030602007207号