--- author: SouthFox title: 使用 Mastodon 作为博客的评论系统 date: 2023-06-16 11:20:30 tags: - Mastodon - 联邦宇宙 - 技术 category: 技术 fedi_url: https://foxsay.southfox.me/@SouthFox/110552875318585284 --- 又在博客的评论系统上左右摇摆了,就算没有人来评论。 之前写过一篇[使用 Giscus 作为博客评论系统](https://blog.southfox.me/2022/01/%E4%B8%BA%E5%8D%9A%E5%AE%A2%E6%94%AF%E6%8C%81%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/)的文章,一年下来的使用体验感受良好,只需要经过一点点配置就能为博客嵌入一个支持 `Markdown` 支持、代码高亮、表情回应、邮件通知、数据背靠 `GitHub`的评论系统,性价比十分之高。但代价也是背靠 `GitHub` ,作为一个大商业公司「发病」是一个不断扔骰子的过程,随着时间流逝,扔出个「大发病」的概率将会趋近于必然。可能是什么「大会员」或是「API 收大费」。为了避免最坏情况发生所以有必要准备一些备选方案。 比如 [Cusdis](https://cusdis.com/) 是我之前尝试过一阵的评论系统方案,虽然各方面都比较优秀,但是它上面的一些小小「毛刺」最终让我放弃继续使用(主要是一些样式问题),更大的原因也是我开始觉得为了一年不到十多条的评论是否有必要开一个数据库+评论系统。 所以最后是打算复用一些已经建立的应用作为博客的评论系统,例如 [cactus](https://cactus.chat/) 评论系统就可以使用 `Matrix` 聊天协议作为博客的评论系统。不过我觉得着有点「重」了,而且 `Matrix` 主流实现 `Synapse` 对于房间、媒体管理这些支持并不算太好,要是被恶意刷请求之后很难清理干净。 所以最后将目光放向了 `Mastodon` ,现在谷歌上搜索 `mastodon blog comment` 就能搜索出很多方案,本次我也是参(tou)考(qie)整(feng)合(he)了其中两篇的解决方案: [Adding comments to your blog, powered by mastodon](https://blog.thms.uk/2023/02/mastodon-comments) [Mastodon as comment system for your static blog ](https://danielpecos.com/2022/12/25/mastodon-as-comment-system-for-your-static-blog/) 主要思想就是利用 `Mastodon` 的帖子 `API` 获取一条博文下的所有回复,然后处理后插入的指定位置,并不是太复杂。 ## 实现 作为一个备选方案我并没有删掉之前基于 `Giscus` 的评论方案,现在是处于共存状态。要启用基于 `Mastodon` 的方案就在文章的元数据中指定 `fedi_url` 这个变量: ```ejs <% if (item.no_comment){ %> <% } else { %> <% if (item.fedi_url){ %>