评论系统方案横向对比
Git 托管、自建后端、第三方托管、社交平台、自己写,五条路线二十多个方案逐个拆开比。数据存在谁那儿、读者留言要付出什么,这两件事决定了其余全部差异。附 2026-08-25 逐个仓库核过的活跃度。
本站的评论区是今年 7 月上线的,用的 Waline,不过前端自己魔改过。
这篇文章来横向对比一些其他的评论系统,如果你也博客建站可以参考一下。
两个维度分类
真正把方案分开的是两件事:数据存储位置,以及读者留一条言需要什么条件。
| 路线 | 存储位置 | 留言门槛 | 维护 | 方案代表 |
|---|---|---|---|---|
| Git 托管 | 代码托管平台 | 一个 GitHub 账号 | Nothing | giscus、utterances、Staticman |
| 自建后端 | 自托管 | 无门槛 | 一个常驻进程 + 一个库 | Waline、Artalk、Twikoo、Remark42、Isso |
| 第三方托管 | 服务商 | 多半要注册 | Money! | Disqus、Hyvor Talk、来必力 |
| 社交平台 | 社交平台 | 社交平台账号 | Nothing | Bluesky、Mastodon、Webmention |
| 自己写 | 自托管 | 你说了算 | ALL | Workers + D1、Supabase、表单服务 |
提示
决定评论区活跃度的从来不是你用了 Waline 还是 Artalk,而是读者能不能不注册就留言——这条比后面所有功能对比加起来都重要,我先把它放在最前面。
一、Git 托管型
思路是把代码托管平台当数据库,评论存进 Issues 或 Discussions,前端纯 JS 调 API 读写。
giscus
12K star,基于 GitHub Discussions。装一个 GitHub App、前端引一个 <script> 就成功,自带嵌套回复、Reactions、完整 Markdown 和代码高亮,评论顺带变成 GitHub 上的一条 Discussion,还有额外的可发现性。
三个要求:
1、仓库必须是公开的
2、读者必须有 GitHub 账号并授权 giscus 这个 App,没有账号或者不想登录的直接就是不评论了
3、没有导出评论的功能
提示
配置上有个小技巧:分类选 Announcements 类型,因为这种分类普通用户没法自己发起新讨论,里面只会有 giscus 建的那些,评论区干净得多。
utterances
giscus 的前身,基于 Issues 而不是 Discussions,9.7 千 star,但最后一次提交停在 2024-08(2026-08-25 查)。功能更少,而且每篇文章占一个 Issue,仓库的 issue 列表会变成一片评论。现在没什么理由再选它。
Staticman:这一类里最特别的一个
前面两个是把评论存在别人家,Staticman 是把评论变成你仓库里的数据文件:它收下表单提交,校验之后直接 commit 成 _data/comments/ 下面的 YAML 或 JSON,下次构建时当成静态内容渲染出来。想审核就让它提 PR,你合了才上线。
这套的好处是别家给不了的:评论最终是纯静态文件,加载零开销,自带版本历史,备份等于备份仓库,而且读者不需要任何账号——填个表就行。Jekyll 圈子里用得比较多。
代价也很实在:评论要等一次构建才出现(快的话几十秒,慢的话看 CI 排队),公共实例长期不稳,认真用就得自部署,而且它自己也不太动了——2.4 千 star,最后一次提交 2024-04,README 里还写着要 Node.js 8.11.3。
gitalk / Gitment / Beaudar
老一批 GitHub Issues 方案。
gitalk 现在还有提交(7.2 千 star,2026-07),但它的结构性问题没变:OAuth 换 token 需要 client secret,纯前端方案要么把 secret 摆出来,要么依赖一个第三方代理服务器帮你换。
Gitment 停在 2021-10,别用了。
Beaudar 是 utterances 的中文优化 fork,改善了国内加载和中文显示,还在更(2025-12),但只有 111 star,属于「能用,但出了问题只有你自己」。
二、自建后端型:独立博客圈的主流
自己跑一个服务,读者填个昵称邮箱就能留言,不需要任何账号。
Waline
Valine 的精神继任者,中文圈生态最大的一个,3.1 千 star,更新很勤(2026-08-24 还有提交)。
| 项 | 情况 |
|---|---|
| 技术栈 | Node.js |
| 数据库 | SQLite / MySQL / PostgreSQL / MongoDB 等一长串 |
| 部署 | Vercel 一键、Docker、裸机 Node 都行 |
| 特性 | Markdown、表情、阅读量统计、点赞、邮件与多种 Webhook 推送、评论者等级、置顶、黑名单、敏感词、Akismet、图片上传、@ 提及、私密评论、独立后台 |
它的问题是功能太多带出来的:环境变量能拉一长串,文档里还留着不少 LeanCloud 时代的历史包袱,Node 进程的内存占用比 Go 那几个高一截。
Waline 使用缺点
上面那条是看文档就能知道的。下面这些是本站挑出来的都是配置项解决不了的那种
1、反垃圾只扫正文如果广告全在昵称和网址里,官方这个过滤器根本够不着
2、弹窗和报错不归你管。删评论的 confirm、六处报错的 alert 都埋在 Vue 组件闭包里,从外面改不到,想换成站内模态框只能去顶掉全局的 window.alert / window.confirm
3、不配图片上传接口就是 base64 内联,图片直接编码进正文发给服务端,稍微大一点就撞请求体上限,而且是点了才发现失败。不打算接图床就 imageUploader: false 显式关掉,直接关闭插入图片那个按钮
4、登录问题,如果评论使用不同的域名,手机端可能登录不上,而且手机端的后台系统也有UI自适应兼容问题
5、官方快速上手让你把挂载点写成 <div id="waline">,而 waline 这个名字太容易被文章标题撞上!会导致评论区会被整个挂进文章中段,页面底部则永远停在「评论加载中」。挂载点的 id 得取个标题绝不会 slug 出来的值!
Artalk
Go 写的,单二进制,2.3 千 star,活跃(2026-08)。默认 SQLite 零配置,也支持 MySQL / PostgreSQL;下载一个文件直接跑,或者一个 Docker 容器。
优点很集中:内存占用极低,侧边栏式后台(不用跳到独立页面),i18n 做得比同类好,提供 OpenAPI,还支持一个实例给多个站点用。
Twikoo
2.3 千 star,活跃(2026-08)。UI 是这几个里最精致的,管理面板直接嵌在评论框的齿轮图标里,很顺手;支持从 Valine、Artalk、Disqus 导入。
Remark42
Go 写的隐私优先方案,5.6 千 star,活跃(2026-08-24),数据库是 BoltDB——就是一个文件。
支持 Google、GitHub、Microsoft、Apple、Telegram 等一堆 OAuth,也支持匿名评论;只存哈希后的用户 ID 和用户名,无追踪脚本,内置导出和删除,官方自称资源占用极低。合规这件事上它是最省心的一个。
两个问题:开了匿名之后没有内置的垃圾过滤,必须自己接反垃圾服务;中文社区几乎没人用,出问题只能读源码和英文 issue,UI 也是偏西式的审美。
Isso
德语项目,Python + SQLite,老牌 Disqus 替代品。
仓库搬到了 isso-comments/isso,5.3 千 star,2026-08 还有提交。
它的定位是「只想要能留言」:Markdown、默认 15 分钟内可编辑或删除自己的评论、审核队列里的评论通过前不公开、配置文件一眼看完。没有 OAuth,UI 相当朴素。依赖极低,适合真的很小的机器。
Commento-现成的反面教材
因为它把「选型时活跃度该占多少权重」这件事演示得非常完整:
| 阶段 | 状况 |
|---|---|
| Commento | 原本口碑不错,主打隐私无追踪,后来开源版停滞,作者转向付费托管 |
| Commento++ | 社区 fork,最后一次提交停在 2023-06 |
| Comentario | 目前活跃维护的继任者(GitLab 上,2026-08-24 还在动),Go + PostgreSQL,多站点、SSO、评论投票、Akismet/Perspective 反垃圾 |
评论系统是要长期跑在你服务器上的东西,作者跑路意味着以后的安全补丁得你自己打
其他
| 方案 | 状况(2026-08-25 查) |
|---|---|
| Cusdis | 极轻量、主打隐私的 Disqus 平替,仓库已归档,只读了,别再上新站 |
| Schnack | Node.js,不支持匿名、必须第三方登录(作者的理由是这样天然挡机器人),最后提交 2023-03 |
| HashOver | PHP,适合共享虚拟主机,非常老派 |
| Discourse | 开源讨论平台,既能当评论也能当完整论坛,官方建议 2 GB 内存起。个人博客用它是大炮打蚊子,除非你真有一个活跃社区 |
| Coral | Mozilla 系出身,面向新闻媒体,MongoDB,还在更但同样偏重 |
Valine:不推荐新项目
必须提一句,因为老教程里到处都是它。纯前端直连 LeanCloud,没有真正的后端,没有自带后台(要另装 Valine-Admin),社区多次反映评论者的邮箱、IP 等信息可能被前端接口拉到,LeanCloud 国内版还要备案绑域名。仓库最后一次提交 2024-12。
三、第三方托管型:省事,代价是控制权
Disqus
最省事,也是被吐槽最多的。注册即用,跨站身份、通知、反垃圾全包,后台成熟。
三个大问题:
1、评论必须登录、免费版带广告、中国大陆基本访问不了;
2、它是所有方案里最重的一个,一个评论区能拖出一长串第三方请求;
3、隐私保护不行,数据被追踪
DisqusJS 是社区为了绕开墙做的前端代理层,未登录时只能读不能写,属于打补丁。
Hyvor Talk
商业化的隐私友好方案,做了很多年,对隐私很认真,定价(2026-08-25 的官方定价页):
| 档 | 价格 | 额度 | 站点数 |
|---|---|---|---|
| Personal | €5/月,只能按年付 | 2,500 credits/月 | 1 |
| Premium | €12/月 | 10 万 credits/月 | 10 |
| Business | €40/月 | 25 万 credits/月 | 50 |
没有免费档,只有 14 天试用。网上流传的「$5 起」和「€12 起」都不算错,只是各说了一半
来必力(LiveRe)
韩国产品,国内可访问。免费版有广告、加载慢、City 版功能阉割得厉害,口碑一般。国内站点实在不想自建可以考虑,但体验称不上好。
四、社交平台型:新路线
思路是不自己存评论,而是把某条社交帖子的回复拉过来当评论区显示。
Bluesky
发文时同步发一条 Bluesky 帖子,把帖子 URL 写进 frontmatter,前端调 app.bsky.feed.getPostThread 拉回复渲染。现成的库也有,React 项目 npm install 之后一个 <BlueskyComments /> 就能用。
账号验证、托管、存储、反垃圾、内容审核这些烦人的事全归平台,后端都不用写,讨论还天然有传播性。代价是只读(要回复得去 Bluesky 上发)、读者得有账号、国内基本用不了、数据在别人手里。
Mastodon
同样的思路换成 ActivityPub。有意思的是它可以做成完全静态:写个脚本定期拉取帖子的所有回复,写成和文章同名的评论文件,下次构建自动合入;有人改了删了也会跟着同步,整个过程由 CI 提 PR 完成,前端一行 JS 都不需要。
绕了一圈,这其实又回到了 Staticman 那个形态——评论最终是仓库里的静态文件。缺点是有延迟,取决于 CI 跑多勤。
Webmention
IndieWeb 那套标准,门槛偏高,适合 IndieWeb 信仰者。
Telegram 讨论组
中文圈更现实的一个变体:建一个频道加一个关联讨论组,文章同步推送到频道,读者在讨论组里回复,前端把那条消息的回复嵌进页面。国内直连不了,但对已经有 TG 群的博主来说,评论区和读者群本来就是同一批人,合并反而更活。
Cactus Comments
基于 Matrix 协议,可以接自己的 homeserver。理念很好,实际用的人极少。
五、全自研
评论系统需要的东西其实少得很:一张表、一个写接口、一个读接口、一层反垃圾。真正难的是审核后台、通知、防刷这些边角
| 做法 | 说明 |
|---|---|
| Cloudflare Workers + D1 | 免费额度内跑个人博客绰绰有余,没有常驻进程,冷启动可忽略。要自己写后台 |
| Supabase / PocketBase | 直接给你一张表加一套鉴权和行级权限,前端调 SDK。省掉的是鉴权,不是审核 |
| 表单服务 + 人工合入 | Formspree、Netlify Forms 这类收下提交发到你邮箱,你手动写进仓库。听着原始,但对每月十条评论的站点完全够用,而且垃圾评论进不了页面 |
我自己的实际状态是半自研:评论后端仍然是 Waline,一行源码没改;但登录、头像上传、账号页那套是自己写的,账号页里那个评论编辑器也是自己实现的——不含 Waline 的运行时,只照抄了它的 DOM 结构和类名。
这么干的收获是明确的:边角自己写,核心别自己写。存储、通知、反垃圾、审核这些东西,你写出来的第一版一定不如跑了五年的开源项目;但「登录之后头像跟着账号走」这种和你站点强耦合的部分,指望配置项永远差一口气。
六、横向对比总表
活跃度那一栏是 2026-08-25 现查的仓库最后提交时间,不是抄来的。
| 方案 | 栈 | 要后端 | 读者要登录 | 数据归属 | 国内可用 | 占用 | 活跃度 |
|---|---|---|---|---|---|---|---|
| giscus | 无 | 否 | GitHub 账号 | GitHub | 不稳 | 无 | 活跃 |
| utterances | 无 | 否 | GitHub 账号 | GitHub | 不稳 | 无 | 停在 2024-08 |
| Staticman | Node | 是(可自部署) | 否 | 你的仓库 | 看部署 | 低 | 停在 2024-04 |
| Waline | Node | 是 | 否 | 你自己 | 是 | 中 | 活跃 |
| Artalk | Go | 是 | 否 | 你自己 | 是 | 极低 | 活跃 |
| Twikoo | Node | 是 | 否 | 你自己 | 是 | 中 | 活跃 |
| Remark42 | Go | 是 | 可选 | 你自己 | 是 | 极低 | 活跃 |
| Isso | Python | 是 | 否 | 你自己 | 是 | 极低 | 活跃 |
| Comentario | Go + PG | 是 | 可选 | 你自己 | 是 | 中 | 活跃 |
| Cusdis | Node | 是 | 否 | 你自己 | 是 | 低 | 已归档 |
| Valine | 无(LeanCloud) | 否 | 否 | LeanCloud | 是 | 无 | 停滞 |
| Disqus | SaaS | 否 | 是 | Disqus | 否 | 无(但很重) | 商业 |
| Hyvor Talk | SaaS | 否 | 可选 | Hyvor | 是 | 无 | 商业 |
| Bluesky | 无 | 否 | Bluesky 账号 | Bluesky | 否 | 无 | 生态期 |
| 自己写 | 随你 | 看做法 | 你说了算 | 你自己 | 是 | 看做法 | 看你 |
七、怎么选
按最在意的那一条走,四个问题就够了。
一、你的读者是谁? 清一色开发者 → giscus,别折腾。有非技术读者 → Git 托管型和社交平台型全部出局,必须能匿名或者只填邮箱。
二、你有没有 VPS,愿不愿意维护。 没有或者不愿意 → giscus、Bluesky、Staticman,或者付钱买 Hyvor。愿意 → 进自建。
三、自建选哪个。 小内存机器、想要部署最干净 → Artalk。想要功能一步到位、中文资料最多 → Waline。看重 UI 观感 → Twikoo。英文站、隐私优先 → Remark42。只要「能留言」这一个功能 → Isso。
四、国内可访问性重不重要。 重要 → Disqus、Bluesky、Mastodon 全出局,giscus 也要打个问号。
结语
我的建议是别在选型上花太多时间。主流方案之间的差距,远小于「有没有评论区」和「评论区有没有人用」之间的差距。
先随便挑一个能跑起来的,把通知和备份配好,剩下的以后再说:只要你没选 giscus,数据都能搬
提示
本文提到的版本、价格和维护状态是 2026-08-25 现查的。开源项目变化很快,落地前建议再去仓库看一眼最近一次提交的时间。
评论
评论加载中……