Hexo 博客从 Gitalk 迁移到 Giscus 评论系统
Gitalk 作为老牌的 Hexo 评论方案,长期依赖 GitHub Issues 存储评论数据。但随着 GitHub Discussions 的成熟,基于 Discussions 的 Giscus 成为了更轻量、更现代的替代方案。本文记录将 Nexmoe 主题的评论系统从 Gitalk 完整迁移到 Giscus 的全过程。
为什么选择 Giscus
| 特性 | Gitalk | Giscus |
|---|---|---|
| 底层存储 | GitHub Issues | GitHub Discussions |
| 加载速度 | 较慢(需初始化 Issue) | 更快 |
| 嵌套回复 | 不支持 | 原生支持 |
| 表情反应 | 不支持 | 支持 |
| 邮件通知 | 依赖 Issues 机制 | Discussions 原生通知 |
Giscus 的优势在于:
- Discussions 更适合评论场景 — 支持嵌套回复、投票、分类筛选
- 无需预初始化 — Gitalk 首次访问需要创建 Issue,Giscus 自动创建 Discussion
- 更轻量的前端 — 直接嵌入 GitHub 的 Discussions 渲染组件
前置准备
1. 开启仓库 Discussions 功能
进入你的 GitHub Pages 仓库(如 CHH3213.github.io),点击 Settings → 勾选 Discussions。


注意,需要确保要用于存储评论数据的库是公开的。
2. 安装 Giscus GitHub App
访问 giscus.app,点击 configure 按钮,选择你的博客仓库授权。


获取 Giscus 配置参数
在 giscus.app 页面填写以下信息:
- 仓库:你自己的仓库名字,例如我的是
CHH3213/CHH3213.github.io - 页面 ↔ Discussion 映射关系:选择
pathname(按文章路径映射,最常用) - Discussion 分类:选择
Announcements(默认推荐) - 其他选项 默认即可。

填写完成后,页面下方会自动生成一段 <script> 代码,核心参数如下:

注意:
data-category-id是自动生成的,务必从giscus.app 页面复制,不要手动填写。
修改 Hexo 主题配置
Nexmoe 主题通过 slotComment 插槽注入评论代码。编辑主题配置文件 _config.nexmoe.yml:
1 | |

原来的 Gitalk 配置可以注释保留,方便日后回退:
验证部署
本地生成静态文件,检查评论脚本是否正确嵌入:
1 | |
查看任意文章的生成 HTML,搜索 giscus,确认脚本已注入。
确认无误后部署:
1 | |
后记
Gitalk 的评论存储在 Issues 中,Giscus 使用 Discussions,两者数据结构不同。无法自动迁移。如果旧评论重要,建议:
- 保留 Gitalk 配置备份
- 或在切换前手动归档重要评论