utterances

2025-03-28

前端

多听,少说,接受每一个人的责难,但是保留你的最后裁决。——莎士比亚《哈姆雷特》

GitHub - utterance/utterances: 🔮 A lightweight comments widget built on GitHub issues

https://utteranc.es/

Utterances:基于 GitHub Issues 的超轻量评论系统

如果你正在为静态博客寻找一款干净、开源、可控又易用的评论系统,那么你可能会喜欢这款工具——utterances

这是一款用一句话就能说明白的工具:

Utterances 是一个基于 GitHub Issues 的轻量级评论系统,每一条评论本质上都是一条 issue 回复。


为什么选择 utterances?

相比传统的评论插件,它有以下几个显著优势:

  • 🚀 超轻量:仅一个 iframe,不注入额外 JS,加载速度极快

  • 🔐 隐私友好:不收集用户数据,不追踪

  • 🧠 天然反垃圾评论:用户必须使用 GitHub 登录评论

  • ✍️ 支持 Markdown、表情、代码块,评论体验优秀

  • 🧰 自动同步到 Issues:你可以用 GitHub 管理所有评论

  • 📦 完全开源:放心可控,没有隐藏后门或收费陷阱

适合搭配 Hexo、Hugo、VuePress、Astro、Next.js 等静态博客使用,部署毫无压力。


评论原理简介

utterances 会把你的每一篇博客文章,映射成你仓库中的一个 issue
每条评论就是这个 issue 下的回复。

它通过 GitHub 的 OAuth 登录授权,用户用自己的 GitHub 账号评论,评论被自动同步到指定仓库,非常透明。

你可以选择通过:

  • 文章的 pathname

  • url

  • title

  • issue number

  • custom term

来作为 issue 的唯一标识,灵活又方便。


快速开始

1. 准备一个公共仓库作为评论存储位置

比如:yourname/blog-comments
确保开启了 Issues 功能。

2. 配置 utterances

前往:https://utteranc.es/

选择你要用的 repo、映射方式(推荐 pathname)、主题风格(支持暗色/亮色自动适配),然后复制生成的代码片段。

代码大致如下:

1
2
3
4
5
6
7
<script src="https://utteranc.es/client.js"
repo="yourname/blog-comments"
issue-term="pathname"
theme="github-light"
crossorigin="anonymous"
async>
</script>

将它插入到你博客文章页面的合适位置,例如放在文章末尾。


样式效果

默认的 GitHub 风格界面,简洁好看,和大多数技术博客风格自然融合:

  • 支持回复

  • 支持 Markdown 格式

  • 支持代码高亮

  • 响应式设计,适配移动端

utterances example


使用体验分享

我亲自使用 utterances 已有一段时间,感受如下:

  • 集成简单,几乎零配置

  • 评论加载飞快,没有广告、追踪脚本

  • 通过 GitHub 管理所有评论,极为方便

  • 博客干净,页面无任何多余组件

唯一小缺点是:用户必须登录 GitHub 才能评论,这对非技术用户可能稍有门槛。但如果你面向的是开发者,这反而是一种优势。


和 Gitalk 的对比

特性 utterances Gitalk
登录方式 GitHub OAuth GitHub OAuth
样式 极简 GitHub 风格 类似 GitHub,更多配置
评论位置 iframe 注入 原生 DOM 注入
是否开源 ✅ 是 ✅ 是
管理入口 GitHub Issues GitHub Issues
评论门槛 GitHub 登录 GitHub 登录

两者本质思路一样,但 utterances 更轻量,零依赖、加载更快、免维护,适合追求极简体验的开发者。


总结

utterances 是一个几乎完美的静态博客评论系统,它的优点可以概括为:

  • 不需要后端、数据库

  • 免费且开源

  • 评论数据全存储在 GitHub

  • 无广告、无追踪,真正为开发者而生

如果你的博客是面向技术人群,那 utterances 是一个非常值得尝试的解决方案。