让你的静态网站支持评论功能的N种方法

1,987 阅读7分钟

Eleventy,Jekyll和Hugo这样的静态网站生成器已经成为人们建立博客和CMS(Content Manage System内容管理系统)时的的热门工具。WordPress和Medium这样的工具会提供开箱即用的评论区。但是在静态环境中,并没有这么简单。在这篇文章中会总结向读者提供评论功能的不同选择。

第三方集成

第三方服务一般都很容易集成到你的网站中。不好的一点是它们可能会影响性能和隐私政策。评论通过JavaScript加载因而可能不会被搜索引擎检索。此外,用户需要登录或创建一个账户来发表评论(这在建立社区时可能反而是件好事)。最后,所有的评论都存储在一个你完全无法控制的远程服务器上。服务提供者可能会用你的数据做别的事情或者突然关闭服务(在被竞争对手收购后并不罕见)。

下面是一些常见的第三方评论服务。

  • Disqus 可能是最热门的评论托管服务。它提供一个基础的支持广告的方案,但是有可能会带来隐私,安全和性能上的问题
  • Facebook comments 一个和Disqus一样有隐私泄漏隐患的现成方案。
  • Muut 轻量级且无广告,但是我并没有找到免费的选项。起步价是16刀每月,对于小型博客可能不值。
  • Remarkbox 完全免费提供,用爱发电
  • JustComments 一个按量付费的软件,你的月费取决于阅读量,起步价5刀每月。基础版本可以自主部署。
  • CommentBox 每月100条评论免费。不限量评论价格起步10刀每月。
  • HyperComments 一个按访问量付费的服务,每个网站起步价2刀每月。
  • GraphComments 很大方地提供了每个月1M访问量的免费额度。但是要在网站中插入一个Facebook脚本,可能会有隐私问题。
  • FastComments。收费,起步价5刀每月。
  • Hyvor Talk 收费,起步价5刀每月。
  • ReplyBox 月访问量20000起步价6刀每月。
  • Caint 免费开源的评论服务。

站外托管

假如你非常在意网站的性能同时又想享受第三方服务的便利,你可能会想将评论功能彻底外包出去。实现的成本可以低到只用在你的文章末尾添加一条链接。但是你仍然需要评估出让数据所有权带来的问题。

  • TwitterMastodon 你很可能已经通过推特分享过你的文章了,我们可以两级反转,在每篇文章中添加你的推文的链接,让人们回推特留言。
  • Reddit 创建一个你自己的小组并在博客的每篇文章中添加链接。你还可以让人们对你的文章投票,据此来观察文章的受欢迎程度。
  • Hacker News 和Reddit类似,但受众更倾向于技术圈子。不好的是你的链接没有专门的空间。

这种方案是否可行还取决与你的读者的习惯。

自托管

自托管博客评论解决了很多第三方服务的问题,但也意味着你必须接管整个管理流程,包括防灌水(你也可以让其他服务来负责,如Akismet)。

  • Discourse 一个完整的论坛,被广泛用于替换传统的讨论区。它也可以被用作评论托管,Discourse的联合创始人Jeff Atwood在 个人博客 中就是这么用的。
  • Talkyard 和Discourse类似,整合了论坛,Q&A,聊天和博客评论。Talkyard的托管方案价位比较合理,仅需0.5欧元每月。
  • Coral / Talk 由Mozilla和一些知名新闻网站建立。
  • Cactus Comments 基于Matrix协议的联合评论系统。
  • Isso 创立与2013年,GitHub上热门独立项目之一,有4400多个星,并未由主流机构支持。我在2016年尝试过使用,不幸的是遇到了一些问题没有把它跑起来。
  • Juvia 最老的(2011)仍在维护中的开源评论系统之一。
  • Commento 自称“注重隐私的讨论区替代方案”,创建于2017年11月,GitHub上3500+星,有可用的托管版本
  • Schnack 又一个自托管选择,GitHub上1700+星。支持审核和从Disqus和Wordpress导入评论。
  • Remark42 GitHub 2800+星,社区维护和拓展十分活跃的热门方案。
  • Comntr 一个新的开源项目,支持自托管运行的第三方集成工具。
  • Glosa 一个被低估的开源项目,支持从Disqus导入评论。
  • Cusdis 新开源项目(截至2021年四月)。
  • Komento 基于IPFS的去中心化评论托管平台。截至2021年四月,它还处于Beta测试阶段。
  • HashOver 一个免费的开源PHP评论系统,简约主题,完全匿名评论。

GitHub

如果你的网站是面向开发者的,可以考虑使用GitHub实现评论功能。为每一篇博文创建一个GitHub issue并在网站中加载issue的评论。下面是一些相关的开源工具:

  • Utterances 一个轻量级的基于GitHub issue的评论组件,截至2021年5月还在积极维护。
  • Giscus 基于GitHub discussions的评论系统。灵感源自Utterances并在积极维护中。
  • Gitment 基于GitHub issue的评论系统,2018年后不再维护。

即使为了更广的受众,你也仍然可以使用GitHub让用户不需要账户就可以评论。Staticman 首先将评论转换成JSON或YAML这样的格式,然后自动将评论commit到git仓库中或创建一个PR(如果你想审核评论)。

Webmentions

作为IndieWeb社区的一部分,webmentions为评论,点赞等互动行为的分享提供联合/去中心化的方式。它更像是个技术议题,你可以去Sebastian De Deyne的博客了解更多信息。

人工处理

假如你收到的评论并不多,可以考虑自主实现。让你的读者通过文章底部的表单或链接向你发送邮件,这样就得到了完全静态的脱离JavaScript的评论,还可以借助邮箱的能力进行审核甚至防灌水(依赖于邮箱提供商),当然这样需要更多人工。

最后,干脆移除评论功能也是一个选择,但我建议至少在页尾加一个“给我发个邮件”的链接。这些年来我收到了很多有价值的评论,但我相信,即使我的博客没有评论功能他们也能通过邮件联系到我。但是,当人们只能一对一交流的时候,你是无法建立起社区氛围的。

Jeff Atwood宣称没有评论的博客不能被称为博客。诚然,他收到大量评论,并围绕博客建立了庞大的社区,但是这并不适用于所有人。来自Zen Habits的Leo Babauta为了专注于内容创作,避免浪费时间审核垃圾评论,关闭了博客的评论功能

折衷方案

我在五年博客生涯中总共收到了77条评论(每个月大约1.28条评论),这么少的互动并不值得我花时间去实现自托管的方案,但是我仍然会在意(至少最开始的时候)读者的声音,所以在2020年移除评论之前,我采取了一个折衷的方案,我添加了一个“加载评论”的按钮,用户点击按钮才会加载评论。

你可以在上文提到的大部分方法中采取这种方式。

总结

我列出了不同的在静态网站中引入评论功能的不同技术方案,你的网站应该选择哪个方案?答案是没有银弹。“最好”的方法取决于你的需求:

  • 你准备在配置/审核上花多少时间?
  • 你有多看重性能/隐私/数据所有权?
  • 你的目标受众是谁?
  • 你想建立社区吗?

在本博客中,我决定采取站外托管方案外加一个邮箱链接。

有什么想法吗?我遗漏了什么吗?欢迎评论。