利用 Github Action 自动初始化 Gitalk 评论之Python篇
起因
静态博客已经流行了好多年了,最近终于有动力将博客从 Blogger 迁移到了 Hugo + vercel + Gitalk,期间发现每新发布一篇文章居然要手动去初始化 Gitak 评论,这完全不能忍受,谷哥告诉我有很多人使用脚本实现了,奈何是使用的 ruby, 故使用 python 造个轮子
仅仅在本脚本发布的一天之后,我发现了utteranc 评论系统,它完美的解决了 Gitalk的各种问题,推荐大家替换成 utteranc
本脚本功能
- 自动初始化 Gitalk 评论
- 自动排除已经初始化的文章,防止重复创建 issue
准备工作
- 博客需要生成
sitemap.xml
, 格式必须为:https://www.lshell.com/sitemap.xml - 在 GitHub 申请一个新的 Person access token,拥有仓库的读权限;
开始
将 Gitalk 的 id 修改为 path
我的博客使用了 even 主题,Gitalk 默认是使用文章发布时间来映射 issuse,我优化成使用博客path的md5值,以下脚本也是使用 path来映射,具体优化步骤如下:
-
将
themes/even/layouts/partials/comments.html
复制到layouts/partials/comments.html
-
引入 md5 js 库
<script src="https://cdn.bootcss.com/blueimp-md5/1.1.0/js/md5.min.js"></script>
-
找到 Gitalk 部分,并修改 id 为
location.pathname
, 如下图: -
将此文件提交到仓库
如何创建 Person token
-
进入 Github Persion token 创建页面:https://github.com/settings/tokens/new
-
填入一个辨识性高的名额和选择仓库读取权限,如下图:
-
点击最现在的 Generate token 创建,得到 token, 注意:token只会在这里显示一次,请一定保存好,若丢失只能重新创建
创建 Github 仓库 Secrets
因为涉及到关键信息,我们将需要用到的字段创建成 Github 仓库 Secrets 以防止信息泄漏。
在 Github 中对应的博客仓库中进入:Settings ==> Secrets 页面,然后选择 new secret 创建
拿我博客来说,需要创建的变量如下(注意单引号不能丢):
- REPO_NAME:
'lshell.com'
- SITEMAP_URL:
'https://www.lshell.com/sitemap.xml'
- SITE_URL:
'https://www.lshell.com'
- TOKEN:
'8a8612c4914bb79225629ee3dd4d904a6fe53294'
- USERNAME:
'lshell'
注意:以上信息请修改成你自己的信息
将 python 脚本提交到仓库
从我的 Github 下载 init-gitalk.py
和 requirements.txt
到你的仓库中就行
创建 Github Action
-
在你的博客仓库页面点击 Action 进入管理页面
-
依次点击 New workflow ==> Set up workflow 创建 Action
-
文件名保持
blank.yml
不变,将blank.yml的内容粘贴到文件中,然后依次点击右上角的 Start commit ==> Commit new file 保存。
缺点
- 每次 push 都会运行脚本,浪费 github 的计算资源了
- 可能存在重复创建 issues 的问题
建议大家使用utteranc 评论系统
感谢
- hugo 提供如此好的博客程序
- hugo-theme-even 提供如此漂亮的主题
- 自动初始化 Gitalk 和 Gitment 评论 提供自动初始化思路