Twikoo 评论区博主标识实现与 QQ 邮箱踩坑记录
Twikoo 评论区博主标识实现与 QQ 邮箱踩坑记录
Yumian前言
最近在给博客评论区添加博主标识,想在博主评论的昵称旁边显示「博主」和「雨眠」两个标,
本以为照着教程配个 MASTER_EMAIL_HASH 环境变量就完事了,结果踩了一下午坑,这里哪里查了查了半天都不生效。最后发现根本原因是QQ 邮箱在 Twikoo 中不走 Gravatar 头像体系,导致环境变量匹配流程完全失效。
这篇记录一下最终的方案和踩坑过程。
最终效果
博主评论的昵称区域会显示两个标签:
1 | [博主] 雨眠 [雨眠] |
方案一:MASTER_EMAIL_HASH (这个对非 QQ 邮箱有效,对 QQ 邮箱无效)
1. 原理
Twikoo 提供了 MASTER_EMAIL_HASH 环境变量,将博主邮箱做MD5后填入,Twikoo后端在返回评论数据时会比对邮箱 MD5,匹配成功的评论会自动带上 tk-master class,前端只需要写 CSS 即可。
2. 配置步骤
在 Vercel 的 Twikoo 后端项目中添加环境变量:
| Key | Value |
|---|---|
MASTER_EMAIL_HASH |
你的邮箱MD5值(小写) |
生成MD5值的命令:
1 | echo -n "your_email@example.com" | md5sum | awk '{print $1}' |
3. 为什么不生效?QQ 邮箱的坑
Twikoo 对邮箱头像的处理逻辑是:
- 非 QQ 邮箱:走 Gravatar,头像 URL 包含邮箱 MD5,
MASTER_EMAIL_HASH可以直接匹配 - QQ 邮箱:Twikoo 检测到 QQ 邮箱后会直接调用 QQ 头像接口(
q.qlogo.cn),完全绕过了 Gravatar 的 MD5 体系
这意味着 QQ 邮箱用户的头像 URL 中根本不会出现邮箱MD5值,MASTER_EMAIL_HASH 永远匹配不到,tk-master class 也永远不会被添加。
这是 Twikoo 的设计特点,不是 bug,但对于使用 QQ 邮箱的博主来说就是个坑。 不管你怎么设置、怎么 Redeploy,环境变量都不可能生效,因为后端压根不会走到 MD5 比对那一步。但是我又是一个一直用qq邮箱的,也不想换一个,所以就使用前端js 的方案
方案二:前端 JS 双重匹配(最终采用的方案)
既然后端环境变量对 QQ 邮箱无效,那就换思路,在前端用 JS 手动给博主评论打标。
1. 修改 twikoo.pug
找到主题的 layout/includes/third-party/comments/twikoo.pug,在 onCommentLoaded 回调中添加匹配逻辑:
1 | - const { envId, region, option } = theme.twikoo |
这里做了双重匹配:既要昵称一致,又要评论时填写的网址和你博客域名一致,防止有人冒充昵称混到博主标。
2. 添加 CSS 样式
新建或修改 source/css/_extra/twikoo-badge.css(AnZhiYu 主题会自动引入 _extra/ 下的所有 CSS):
1 | /* 「博主」标识 — 昵称前面,蓝色 */ |
可以按自己喜欢修改颜色和文字。
最后
愿君安康,平安同乐!

