无论是 Gitalk 还是 Gitment 都只能手动初始化所有文章的评论或者一个一个点开界面,作者觉得这件事情非常麻烦,所以手动抓了一下 Gitalk 和 Gitment 在初始化评论时发出的网络请求后写了一个用于自动化初始评论的脚本

获得权限

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

https://github.com/settings/tokens

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

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

作者已经把这个 token 删掉了,不要想着用这个 token 就能获得到作者 GitHub 的权限

自动化脚本

作者在抓取了 Gitalk 和 Gitment 的 API 请求发现,这两个评论服务是通过 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/

2.使用MD5加密文章ID

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

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

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

3.安装脚本依赖组件

1
2
3
4
5
npm install request --save
npm install xml-parser --save
npm install yamljs --save
npm install cheerio --save

4.下载脚本文件

giteement&gitalk.js

5.修改配置参数

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

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变量内容错误

6.执行脚本

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脚本, 如果需要可以Email我