GitHub 原生评论与点赞系统配置

更新于 2026-08-28

很多静态博客在接入评论区时,通常会选择 Giscus 或 Disqus 这一类第三方 iframe 嵌入方案。但实际用起来,痛点也非常明显:

  • iframe 跨域白屏:国内网络经常加载不出外部脚本,正文底下留下一大块尴尬的空白;
  • 视觉风格互不相认:iframe 里的字体、圆角、暗黑配色很难跟自己的博客主题完美融合;
  • 数据不可控与垃圾广告:一旦第三方服务调整接口互动全挂,还容易被自动化黑产脚本灌水。

RustPress 选择了另一条路:内置 GitHub Issues 原生评论与点赞系统(rustpress-comments。直接用原生 DOM 渲染在正文底部,零 iframe 损耗,自适应主题配色,而且数据完完全全沉淀在你自己指定的 GitHub 仓库里。


一、核心特色

  1. 原生 DOM 深度融合:不再套用任何 iframe,直接继承当前主题(light / default)的排版样式与字体;
  2. 点赞与评论合二为一:不仅支持 Markdown 评论,还支持读者一键点赞 👍(直接同步为 GitHub Issue 的 +1 反应);
  3. 数据资产完全私有:所有评论和点赞直接作为一条条 Issue 和 Comment 存放在你的公开 GitHub 仓库中,谁也拿不走;
  4. Issue 按需自动创建:某篇文章首次有人点赞或留言时,系统会自动以文章标题和 URL 创建对应的 Issue,不需要站长提前手动创建;
  5. 未登录平滑降级:读者即便不登录 GitHub,也能正常阅读已有评论并查看点赞计数。

二、三行极简全局配置

与传统方案需要去查一堆晦涩难懂的 GraphQL Node ID(如 repo_idcategory_id)不同,RustPress 的配置只有三行:

打开博客根目录下的 config.toml,配置 [comments] 小节:

# ==============================================================================
# 评论与点赞系统配置 [comments]
# ==============================================================================
[comments]
enabled = true                                 # 开启全站评论与点赞
repo = "rixingyike/yishulun.com_discus"        # 存放评论 Issue 的 GitHub 公开仓库 (用户名/仓库名)
github_client_id = "0cdfd84658051b0f7de6"      # GitHub OAuth App 的 Client ID
  • enabled:总开关,设为 true 开启;
  • repo:专门用来存评论的公开 GitHub 仓库;
  • github_client_id:GitHub OAuth App 的 Client ID。读者点击登录发表评论时使用;留空则以只读模式展示。

三、准备 GitHub 仓库与 OAuth App

1. 新建一个评论专用公开仓库

  1. 登录 GitHub,点击 New repository
  2. 名字任意(如 yishulun.com_discus),必须选 Public(公开)
  3. 确保仓库开启了 Issues 功能(默认开启)。

2. 创建 GitHub OAuth App

  1. 打开 GitHub -> Settings -> Developer settings -> OAuth Apps
  2. 点击 New OAuth App 填写:
    • Application name:应用名称(如 艺述论评论插件);
    • Homepage URL:应用首页地址(如 https://yishulun.com);
    • Authorization callback URL:先填应用首页,等会儿部署完 Cloudflare Worker 后换成 Worker 的 /callback 地址;
  3. 点击 Register application,拿到 Client IDClient Secret
  4. Client ID 填入 config.tomlgithub_client_id 中。

四、部署 Cloudflare Worker 免服务器 OAuth 代理

为什么需要这个 Worker?

在标准的 OAuth 协议中,前端拿临时 code 换取 access_token 时必须提交 Client Secret。纯静态博客没有后端,我们绝对不能把私密的 Secret 写死在前端 JS 里

RustPress 官方提供了一个开箱即用的 rustpress-comments-oauth-worker.js,部署在免费的 Cloudflare Workers 上,零服务器成本,安全加密保管密钥:

读者点击登录 ──> GitHub 授权 ──> Cloudflare Worker (安全换取 Token) ──> 跳回文章页

部署 3 步走:

步骤 1:在 Cloudflare 创建 Worker

  1. 登录 Cloudflare 控制台
  2. 进入 Workers 和 Pages -> 点击 创建 Worker,起个名字(如 rustpress-comments-oauth),点击 部署
  3. 点击 编辑代码,把 RustPress 仓库中的 rustpress-comments-oauth-worker.js 代码整段粘贴进去,点击 保存并部署
  4. 记下 Worker 分配的域名(例如 https://rustpress-comments-oauth.your-subdomain.workers.dev)。

步骤 2:配置 3 个加密环境变量

进入该 Worker 页面 -> 设置 (Settings) -> 变量 (Variables),添加以下 3 个变量:

  • GITHUB_CLIENT_ID
    • 内容示例0cdfd84658051b0f7de6
    • 是否加密:否
    • 说明:对应你的 GitHub Client ID。
  • GITHUB_CLIENT_SECRET
    • 内容示例48a2...
    • 是否加密是(必须点击 Encrypt)
    • 说明:对应你的 GitHub Client Secret。
  • BLOG_DOMAIN
    • 内容示例https://yishulun.com
    • 是否加密:否
    • 说明:你的独立博客域名(用于防范跨站恶意重定向)。

步骤 3:回填 GitHub OAuth 回调地址

回到 GitHub 的 OAuth App 设置页,把 Authorization callback URL 改为:

https://rustpress-comments-oauth.your-subdomain.workers.dev/callback

到这里,整套评论鉴权闭环就搭建完毕了。

依托 GitHub Issues 构建评论区,让数据资产完全归自己掌控,并天然隔绝了网络上的自动化垃圾群发机器人;有人觉得,使用 GitHub 账号登录,抬高了非开发者访客的互动门槛。这要看你自己的取舍,在技术博客圈子中,这一门槛恰恰是保证高质量技术探讨的过滤器。读者并不是越多越好,读者和朋友一样,贵精不贵多。


五、单篇文章评论独立开关

如果你希望某篇特定文章(或者个人简介页、隐私政策)单独关闭评论区,只要在文章头部的 Frontmatter 里加上 comments: false

---
title: "作者简介与免责声明"
layout: about
comments: false
---

主题模板检测到 page.comments == false 时,会自动隐藏底部的评论输入框与点赞组件。

下一篇,我们来看专栏与分类法路径配置,掌握如何打造短小精炼的优雅的博客 URL。

金石碼农

金石碼农

大学计算机讲师,腾讯云最具价值专家(TVP),《小程序从0到1》《微信小游戏开发》作者,微信学堂讲师,极客时间荣誉讲师。公众号:艺述论。

北京, 中国

扫一扫,添加作者微信

微信二维码

评论

登录 GitHub 后即可发表评论
加载评论中...