1. gitalk简介
Gitalk 是一个基于 GitHub Issue 和 Preact 开发的评论插件。
特点:
- 使用 GitHub 登录
- 支持多语言(en, zh-CN, zh-TW, es-ES, fr, ru)
- 支持个人或组织
- 无干扰模式(设置 distractionFreeMode 为 true 开启)
- 快捷键提交评论 (cmd|ctrl + enter)
本文中,我们学习使用gitalk作为Hexo评论插件。
参考文档:
- 如何在 hexo 博客中,集成 gitalk 评论插件
- 在Hexo、Hugo博客框架中使用Gitalk
- Gitalk评论自动初始化
- hexo next 主题配置 gitalk 评论后无法初始化创建 issue
2. 准备工作
想要使用gitalk,需要申请GitHub Application。
如上图,以郝同学的申请为例:
- Application name填入喜欢的应用名称。
- Homepage URL填入域名。
- Application description填入应用的描述。
- Authorization callback URL 填入域名。
然后,Register application,转到应用页面。在该页面,可以看到Client ID和Client Secret。
3. 配置使用gitalk
3.1. yilia主题配置
具体配置内容参考hexo-theme-yilia - commit/6e339354
最终效果如下图:
打开一些页面的时候,报错:Error: Validation Failed.
在gitalk的issue中发现,如果location.pathname大于50,就会报这个错误。
采用md5编码url的方式来解决这个问题,也已经包含在commit/6e339354中了,配置方法参考文档:
3.2. next主题配置
具体配置内容参考hexo-theme-next - commit/c5b354d2
4. 批量初始化
比较麻烦的是,每篇文章都需要初始化!因此需要搞一个批量初始化的脚本。
具体配置内容参考hexo-deploy - commit/e11e8ec8
1、测试生成 sitemap.xml
1 | hexo g |
2、批量初始化 issues
1 | node init-gitalk.js |
批量初始化可以集中到package.json,添加
1 | { |
对应批量初始化命令改为:
1 | npm run gitalk |
注意:如果文章比较多,那么无法一次性初始化成功,因为github api免费版限制每小时写issue请求为60,超过则会报错:
1 | "message": "You have exceeded a secondary rate limit and have been temporarily blocked from content creation. Please retry your request again later." |
参考文档:
5. 后记
Hexo评论插件对比
- 多说,挺好用,下线了
- 畅言,广告太多,弃用
- disqus,靠谱,但是被墙
- gitalk,初始化麻烦,加载慢
- livere,加载慢,广告需自行屏蔽