这个博客在 2014 年建立时,使用的是多说评论系统,该公司早已倒闭,在 2015 年迁移到了 disqus,然后一直用到了 2022,现在是时候和 disqus 说再见了。

网络上不时有知名博主从 disqus 迁移走的,比如:

之前一直没太在意,毕竟写博客这么久,对于 disqus 还是有一定感情的,在 2015 年 GitHub 没那么火爆时,互联网上可用的免费服务少之又少,disqus 为静态博客的评论提供了一个非常不错的选择。

只不过遗憾的是,即使写了近 10 年的博客,有价值的评论少之又少,可能中文互联网内没多少人认真写技术评论吧。

缘起

这周末闲暇翻阅自己的旧文章时,发现广告多了不少,印象中之前也有广告,但是没这么多。打开浏览器 console 一看,无缘无故多了些 taboola JS 脚本,如下图所示:

taboola 脚本

Google 后发现原来是 disqus 引入的,她们在 2016 就成为好朋友了

disqus 盈利方案讨论

作为一名开发者,理解 disqus 作为一家商业公司需要盈利,在使用它的网站上做广告无可厚非,但现在已经严重影响阅读了,而且我觉得 disqus 除了广告,完全有其他盈利方案,比如

  • 可以做一个类似 Hacker News 的博客聚合平台,允许博主付费提升自己的排名
  • 也可以做一个类似 discu.eu 的评论聚合平台,把 Hacker News/Reddit/Lobsters 等网站聚合起来,然后可以分发 newsletter,提供行业分析等

但是这多么年了,没看到 disqus 有什么新功能推出来,有种起了个大早,赶了个晚集的感觉。

替代方案

邮件

如上文所说,有价值的评论少之又少,那还不如不提供评论系统,读者直接通过邮件来于博主沟通,事后右博主更新到原文中。

这种方式看似原始,其实是非常有效的方式。一方面可以过滤掉垃圾评论,另一方面也方便保留评论,不用担心以后的迁移成本。

最重要一点,使用自己喜欢的邮件客户端来写字,应该是个非常享受的过程,相信这也会促进有价值评论的产生。因此,希望读者以后可以优先通过邮件来与我交流。

giscus

除了邮件外,现在开源、免费的评论系统很多,基于 GitHub discussion 的 giscus 就是其中一个。相比与邮件,discussion 似乎更适合做短小的评论,算是一种效率与实用性的平衡。

我现在用的 even 主题虽然还没支持 giscus,但支持也不是难事,在 layouts/partials 内新建一个 comments.html 即可,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{{ if and .IsPage (ne .Params.comment false) -}}
  {{- if .Site.Params.giscus.repo}}
    <script src="https://giscus.app/client.js"
            data-repo="{{ .Site.Params.giscus.repo}}"
            data-repo-id="{{ .Site.Params.giscus.repoId}}"
            data-category="{{ .Site.Params.giscus.category}}"
            data-category-id="{{ .Site.Params.giscus.categoryId}}"
            data-mapping="pathname"
            data-strict="0"
            data-reactions-enabled="1"
            data-emit-metadata="0"
            data-input-position="top"
            data-theme="preferred_color_scheme"
            data-lang="en"
            data-loading="lazy"
            crossorigin="anonymous"
            async>
    </script>
    <noscript>Please enable JavaScript to view the <a href="https://github.com/giscus/giscus">comments powered by giscus.</a></noscript>
  {{- end }}
{{- end }}

之后再在 config.toml 中增加如下配置即可:

1
2
3
4
5
6
[params]
  [params.giscus]
    repo = "jiacai2050/jiacai2050.github.io"
    repoId = "MDEwOlJlcG9zaXRvcnkxOTMzMzk3Mw=="
    category = "Announcements"
    categoryId = "DIC_kwDOAScDVc4CSP-w"

至于之前在 disque 内的评论(良心厂商,有数据导出功能),想了想也没迁移的必要了,就这样吧。

问题排查

引用 giscus 时, data-len 可以是 zh-CNen ,不能是 zh-cn ,否则可能会报下面的错误:

giscus 未能正确加载

console 中有如下 error 日志:

Refused to frame 'https://giscus.app/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self'".