gitalk

2025-03-27

前端

我荒废了时间,时间便把我荒废了。——莎士比亚

https://github.com/gitalk/gitalk

https://gitalk.github.io/

用 Gitalk 给博客添加评论系统:优雅、开源、无后端依赖

在搭建个人博客时,我们经常面临一个小难题:评论系统用什么好?
传统方案如 Disqus 虽然功能强大,但加载慢、隐私问题多;国内的评论系统则可能存在稳定性和接入成本。

于是我选择了一个更极客、更自由的方式:Gitalk —— 一个基于 GitHub Issues 的评论系统。


什么是 Gitalk?

Gitalk 是一个利用 GitHub Issues 构建的评论系统,由 gitalk 开发者团队 创建。它的设计理念很简单:

既然每个人都有 GitHub 账号,为什么不能用 GitHub 直接发评论?

它通过 GitHub 的 OAuth 授权,允许访问者在你指定的仓库中创建/回复 issue,从而完成评论功能。


Gitalk 的优点

  • 完全免费,只依赖 GitHub,无需后端服务器

  • 界面简洁,支持 Markdown、高亮、表情

  • 评论就是 Issue,天然支持管理、通知、标记等

  • 适合技术博客,访客基本都有 GitHub 账号


样式展示

默认样式已经很好看:

gitalk screenshot

你也可以通过 CSS 自定义样式,和你的博客风格完美融合。


如何集成 Gitalk?

1. 创建一个用于存储评论的 GitHub 仓库

例如:yourname/your-repo-comments
确保仓库是公开的,并启用了 Issues 功能。

2. 注册 OAuth 应用

在 GitHub 的 Developer Settings 中创建一个 OAuth 应用:

  • Application name: 自定义即可

  • Homepage URL: 你的博客主页

  • Authorization callback URL: 例如 https://yourdomain.com

创建后会得到 Client IDClient Secret

3. 引入 Gitalk 脚本和样式

在页面 HTML 中加入:

1
2
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk/dist/gitalk.css">
<script src="https://cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.js"></script>

4. 初始化 Gitalk

在你的页面中加入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div id="gitalk-container"></div>
<script>
const gitalk = new Gitalk({
clientID: '你的 Client ID',
clientSecret: '你的 Client Secret',
repo: '你的评论仓库名',
owner: '你的 GitHub 用户名',
admin: ['你的 GitHub 用户名'], // 拥有写权限的管理员列表
id: location.pathname, // 每篇文章的唯一标识
distractionFreeMode: false
});

gitalk.render('gitalk-container');
</script>

这样就完成了集成,访问页面就会看到评论框啦。


使用体验

我使用 Gitalk 已有一段时间,感受如下:

  • 非常轻量,对博客性能几乎无影响

  • 防垃圾评论能力不错,因为必须 GitHub 登录

  • 兼容性好,移动端体验也不错

  • 唯一的门槛是 OAuth 配置稍复杂,但一劳永逸


注意事项

  • 评论数据是公开的,适合对隐私要求不高的场景

  • 如果你计划部署到多个域名,要注意 OAuth 回调地址需要匹配

  • 不支持游客评论,但这也是一种过滤机制


总结

Gitalk 是一种非常优雅的评论系统解决方案:

  • 如果你希望博客是全静态部署(如 Hexo、Astro、Hugo 等),Gitalk 完全胜任;

  • 如果你的受众大多是程序员或技术爱好者,他们拥有 GitHub 账号的概率非常高;

  • 如果你想保持简洁、可控,而不想依赖第三方黑盒评论系统,Gitalk 值得一试。


如果你正在为博客评论系统发愁,不妨用 Gitalk 来试试,说不定你会爱上它的简单和自由。