一年多前,我研究了一下当时评论系统的现状,最后给网站选择了传统的评论系统。截至目前,有了一些新的进展,和新的想法。
进展
接入 Webmention
出于研究的目的,接入了 Webmention。方便起见,选择了 webmention.io。通过一些桥接服务,可以主动地收集到更多散落各处的互动信息。比如,你将文章链接发布到社交媒体,并收到了一千个赞,这一千赞可以显示在文章上1。
理论上,通过桥接,可以收集到更多类型的内容,比如 Hacker News 上的讨论互动。如果整合 Nostr 的话,就不需要网站本身接入 Nostr 网络了。
接入邮件
邮件通知
传统评论与邮件是一对老搭档了。为了更好地发送评论相关的邮件通知,我还从 SendGrid 迁移到了 Postal。
早年间,豆瓣网的站内信的邮件通知,只有一句话:你有新豆邮。我对此非常愤恨,明明邮件都发过来了,也不说一下是谁发的,说了什么。还要辛苦地登录网站去看。所幸,博客界一般都比较开放,如果你在网站发布的评论,被他人提及或回应,一般就会收到包含全文详情的邮件。
邮件回复
明明全文详情都发过来了,为什么不能直接回复呢?太多的通知邮件的发件信箱都是noreply@*
,除了一些商家的工单系统,以及 Github 等服务。从这点来说,借用 Github Issue 来实现评论系统的方式还真是很棒。
通过邮件回复,也并不难,可以使用现代的邮件平台,他们可以把解析好的邮件内容转发到指定的 Http Endpoint 上2。
使用邮件来做评论系统,可以让讨论博客文章像使用邮件列表一样。在页面上也很方便地处理成嵌套评论。
邮件评论
再进一步,为什么发邮件只能用来回复邮件通知呢?或许可以主动出击,可以打开邮箱客户端,直接发送邮件来评论文章或是别人的评论。喜欢用邮件来与人交流的,有福了,终于。
在发表评论的按钮旁,我放置了一个 mailto 协议的超链接,点击打开邮件客户端,就可以用发邮件来替代页面表单。
访客的身份
如果你用发邮件的方式来评论,那么你的邮箱地址就自然是有效的。在网站上就可以显示一个认证图标,以向人明示,这人使用了真实的邮箱。
当然这不是说,使用表单评论的人的邮箱就算是无效的。不过,谁知道呢,邮箱一栏是可以随便填的,可以填别人的,也可以填一个假的。
既然邮箱不一定是真实的,索性,我就允许你不写邮箱。让你彻底享受隐私的礼遇、上网的快乐,代价是在你的信息旁边显示一颗狗头——在网络上没人知道你是一条狗。
既然邮箱这样的东西,都可以不填了,那么名称也就更无所谓了。当然,后面这种信息不全的回复,是会受到一定的发送限制,以及可能需要审核。
敏感信息
一条评论,大概只有两个字段是敏感的,IP 与邮箱。我的文章内容是基于 markdown 文件的,非常便于开源。但本地评论中的敏感信息,则需要加密存储,使用时再使用密钥还原。
展望
改进
性能与有用的小功能,是永远的改进方向。比如分页加载、投票、查询等等。以及,更好的邮件通知。因为在使用 WordPress 的日子里,网站常常被 Spam 评论轰炸,而我的邮箱则被评论的邮件通知轰炸。
整合
我认为文章的评论,是文章内容的延伸。如果没有评论,那么还不如直接在 RSS 阅读器、公众号平台、营销号发的截图里读一读就算了。除了联系作者外,就没有必要访问文章了。所以四处散落的信息,可以收集起来,让读者更直观地评估文章。
评论服务
当前静态网站非常流行,更多的时候大家需要的是一个第三方评论系统。鉴于多说关闭事件,使用第三方评论系统的风险也必须要考虑。如果我来做一个评论系统的话,那么最重要的一点就是数据随时可导出,或者说实时导出——因为我的评论系统目前是基于文件存储的,可以 push 到 git repo。
结语
个人网站或博客,已经是一种怀旧玩具了。最近竟看到有人还在折腾第三方评论系统3,或是自研程序和评论系统4。怀旧不一定复古,应该会有更多花样。
参考
-
Jason. 透過 webmention 來搜集 blog 的社群迴響. Jason's Web Memo. 2022-09-12. ↩
-
Tautvydas Tijūnaitis. Enable the use of email replies to post comments or messages. Mailersend. 2022-05-25. ↩
-
ashin. 个人博客新增云评论留言板,欢迎大家测试. V2EX. 2024-08-06. ↩
-
Darmau. This site has evolved to the third generation. Darmau. 2024-08-05. ↩
Webmention
https://x.com/dallaslu/status/1821817827780690345X.com
Nostr
评论表单
Test to see if I have a dog's head next to my name.
Ha-ha-ha. Laugh it up.
It's cool if you can comment anonymously.