无论是 Gitalk 还是 Gitment ,甚至是 Giteement 都只能手动初始化所有文章的评论
我觉得这件事情非常麻烦,所以就有了这篇文章 自动化初始评论的脚本

获得 Issues 操作权限

  1. 在使用该脚本之前, 首先要在 GitHub 中创建一个新的 Personal access tokens 私人密钥

https://github.com/settings/tokens

  1. 选择 Generate new token ,在当前的页面中为该 Token 添加所有 Repo 的权限

  1. 在这里创建之后,点击界面最下的面 Generate token 按钮获得一个新的 token, 一定要保存这个token,只显示一次

编写自动化初始化脚本

因为评论服务是通过 GitHub 提供的 API 创建含有相应标签的 issue,所以我们应该也可以直接使用 GitHub 的 API 创建所有博客文章对应的 issue,这与通过评论插件创建 issue 是完全一样的,在创建之后无论是 Gitalk 还是 Gitment 都可以通过对应的标签直接在仓库中找到对应的 issue 了

  1. 为 hexo 添加生成 sitemap

由于脚本是基于网站sitemap的批量创建issue的,所以需要安装该插件

https://phantomt.github.io/2019/05/02/Hexo-001-sitemap/

  1. 使用 MD5 加密文章ID

因为在脚本中的id一栏设置了对 pathname 进行MD5加密,因此在自动初始化的脚本中,也要相对的在label里对path进行MD5处理

如果脚本中不进行MD5加密,那么创建的 Issue 的 label 就会是原始的文章地址,而 Gitalk 并不识别这个 Issue,还是需要手动初始化(两个 Issue 是不会合并的)

因此,如果在Gitalk 和 Gitment 里设置了 MD5,那么在脚本里同样要进行 MD5,同一文件的 MD5 摘要是一样的

  1. 安装脚本依赖组件
1
npm install request xml-parser yamljs cheerio --save
  1. 下载保存脚本文件

下载地址:giteement&gitalk.js

  1. 配置脚本参数

编辑下载好的脚本文件, 并根据自己的情况进行配置

1
2
3
4
5
6
username: "YourGithubUserName", // GitHub 用户名
token: "YourPersonalAccessToken", // GitHub Token
repo: "YourGitalkIssueRepo", // 存放 issues的git仓库
// sitemap.xml的路径,无需修改,其他情况自行处理
sitemapUrl: path.resolve(__dirname, "./public/sitemap.xml"),
kind: "Gitalk", // "Gitalk" or "Gitment"

其中token就是上面申请并保存的 Token, 没有 token 是无法使用API的,token 错误会导致 issues 变量内容错误

  1. 执行脚本
1
node giteement&gitalk.js

等待 40 秒后,批量自动生成正确的 Issue
当然如果想要部署博客的时候自动运行可以在 Hexo 根目录的 package.json 文件里加入

1
2
3
"scripts": {
"deploy": "hexo clean && hexo g -d && node giteement&gitalk.js"
}

之后直接输入 npm run deploy 即可直接执行

Giteement 自动初始化

如果需求量大,我会将 Giteement 批量初始化脚本公布, 也同样是基于 nodejs 编写的