最近在分享个人博客链接的时候,发现微信分享显示的是一个文本链接,而不是卡片式链接,这样会导致分享的链接无法显示标题、图片等信息。为了解决这个问题,提升分享链接的用户体验,需要在Hexo博客中添加微信分享显示卡片式链接的代码。

一、核心原理
微信安全校验,网站必须使用HTTPS协议,否则微信识别不出卡片。
微信分享卡片读取网页里的 4 个标签:
- og:title:卡片标题
- og:description:卡片简介
- og:image:卡片缩略图(最关键,没有就不显示卡片)
- og:url:博客链接
Open Graph 协议(OGP)是一种用于在社交媒体平台上分享网页内容的协议。拓展阅读:Open Graph 协议(OGP)
- 微信放开外部链接访问后,加了访问来源校验机制:
- 聊天框直接点链接进入
来源标记为「外部直链」,微信强制屏蔽 OG 卡片抓取,不管你 OG 标签多完美、HTTPS 多规范,一律只显示蓝色文字链接,不会出卡片。 - 扫码 / 公众号菜单 / 收藏进入
来源标记为「正规入口」,微信才会正常抓取 OG 标签、生成卡片。
二、解决方案
第一步 :检查并修改Hexo博客核心配置
- 修改Hexo根目录_config.yml(统一HTTPS)
打开博客根目录的_config.yml文件,找到并修改以下配置,使用HTTPS协议:
1 | # Hexo 主配置 |
修改Landscape主题head.ejs(配置完整OG标签)
我的Hexo博客中,使用 landscape 主题默认没有og标签,所以微信识别不出卡片。
路径:themes/landscape/layout/_partial/head.ejs,这是配置OG标签的核心文件,操作如下:
删掉这一行:1
<%- open_graph({twitter_id: theme.twitter, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %>
替换成自定义OG标签:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26<%
// 1. 生成分享图片 (优先文章封面 > 站点默认图)
var ogImage = '';
// 文章封面图 (在Markdown头部写: cover: /img/your-cover.jpg)
if (page.cover) {
ogImage = page.cover;
} else {
// 站点默认分享图 (自己上传一张到 source/img/og-default.jpg)
ogImage = '/img/wechat-share.jpg';
}
// 转为绝对HTTPS地址
if (!ogImage.startsWith('http')) {
ogImage = config.url + ogImage;
}
// 2. 生成描述 (优先文章描述 > 站点描述)
var ogDesc = page.description || config.description;
// 3. 输出完整OG标签 (覆盖默认函数)
%>
<meta property="og:type" content="website" />
<meta property="og:title" content="<%= page.title || config.title %>" />
<meta property="og:description" content="<%= ogDesc %>" />
<meta property="og:url" content="<%= page.permalink || config.url %>" />
<meta property="og:image" content="<%= ogImage %>" />
<meta property="og:site_name" content="<%= config.title %>" />准备卡片缩略图
- 图片要求:尺寸1200×630px(微信官方标准)、格式仅JPG(拒绝PNG、WebP)、大小≤500KB、无防盗链、无跨域;
- 放置路径:在博客根目录的source文件夹下,新建img文件夹,将图片命名为wechat-share.jpg(与OG标签中的路径对应);
- 验证:浏览器直接访问https://你的域名/img/wechat-share.jpg,能正常打开即合格。
第二步 :文章配置(让每篇文章都有专属卡片)
在你的 .md 文章最顶部这样写:
1 |
|
第三步 :重新部署博客
在Hexo根目录下,执行以下命令重新部署博客:
1 | hexo clean # 清空缓存 |
第四步 :解决微信平台限制
- 方式 1:收藏法
微信打开你的博客 https://你的域名
点右上角「…」→ 收藏
从「我的收藏」打开页面,再分享,100% 出卡片 - 方式 2:二维码法
把链接生成二维码,扫码进入分享,永久卡片。 - 方式 3:公众号菜单法
绑定公众号,把链接加到公众号自定义菜单,从菜单点开分享,必出卡片。 - 方式 4:JS-SDK法(门槛高)
接入微信JS-SDK,实现自定义分享卡片。需进行签名验证等操作,比比较复杂,可参考微信官方文档。 - 微信JS-SDK文档
第五步 :验证分享卡片
配置完成后,通过以下两步验证,确保卡片能正常显示:
- 网页源码验证:打开博客 → F12 → Elements → 搜索og:,能看到完整的OG标签,且og:image是HTTPS绝对地址;

- 微信测试:按对应方案(收藏/扫码/直接点击)打开链接,点击右上角“…” → 发送给朋友,聊天框能显示标题+描述+缩略图,即成功。

三、总结
Hexo博客添加微信分享卡片,核心就是“规范配置OG标签+满足微信抓取规则”。对于Landscape主题,重点是修改_config.yml和head.ejs,确保HTTPS和OG标签完整;对于微信的平台限制,不想折腾就用收藏/二维码,想完美解决就接入JS-SDK。
整个过程虽然踩了不少坑,但最终实现了微信分享卡片的正常显示,也对Hexo的配置和微信的抓取规则有了更深入的了解。
解决思路,个人浅见,如有巧合,以你为准