toFrankie / blog

种一棵树,最好的时间是十年前。其次,是现在。
22 stars 1 forks source link

使用 GitHub 作为博客之后,可以利用 GitHub Actions 做哪些事情? #349

Open toFrankie opened 2 months ago

toFrankie commented 2 months ago

配图源自 Freepik

前言

去年二月,我将简书所有文章搬到 GitHub 上,终于不用被审核了,爽!

现在,issues 页就是文章列表,README 就是主页。

📢 你也可以使用 Github Blogger 构建你的博客,只需一个仓库就可以开始了。

接下来,我会介绍一些利用自动化流程来更新 README 等操作。

如果第一次写的,简单了解:

不懂也问题不大,直接问 ChatGPT 就好。

本文主要提供思路,具体实现可参考我的博客,戳我

文章备份

数据在手才最安全的。

也可以自定义 GitHub Workflow,在 issue 被创建、被编辑,或定时任务,将 Issue 内容保存到仓库内。

如果你用 Github Blogger 来管理文章,可以省略第一个,因为每一次内容变更它都会提交到仓库,存放于 archives 目录。

仓库访问数据

在仓库 Insights - Traffic 处可以看到近两周的一些数据。

具有仓库推送权限的任何人都可以查看其流量,包括完整克隆(不是提取)、过去 14 天的访问者、推荐站点以及流量图中的热门内容。

由于只能看到最近 14 天的数据,如果要统计总访问量,可以创建一个定时任务的 Workflow 将数据保存到仓库内。

如果要将访问量展示在 README 里,可以将上述数据统计的数据,生成一个 SVG 图片,然后 README.md 中引用该图片文件即可。

可参考这里

我还看到另一个方案 Hints,当你在 README.md 引入他的图片之后,每访问 README 一次,也就是 Get 一次图片,那么访问量 +1,原理应该跟埋点差不多。缺点也明显,只有访问 README 才会被统计,访问 issue 等流量无法统计。

文章统计

可以做些什么呢?

比如:

字数统计我暂时没做,思路很简单,获取所有 issues,统计 issue.body 渲染成 Markdown 格式后的字数,打算参考 ByteMd

每年文章数,遍历所有 issues,根据 issue.created_at 判断年份,可得出数据。我个人的话,更喜欢添加一个年份 Label,并利用 GitHub Issue 筛选功能,以便于快速查看每年所写文章,而且我有一些往年在简书写的文章,也是从去年从迁到 GitHub 上,所以创建时间也对不上。

近期热门文章,其实跟上一章节 Traffic 是相关的,它可以获取近两周排名前 10 的内容,但不单指 issue 内容,还有其他的。只能根据返回的 path 过滤得到对应的 issue。

近期创建/更新的文章,可以设置一个 Workflow,每当 issue 被创建或编辑时触发,然后也是通过 List repository issues 接口获取近 10 篇,加个排序 sort = updated 即可。可参考我的

配置 issue 模板

这类博客型仓库,每个 issue 就是一篇文章,通常不希望他人来创建新的 issue,我们可以为仓库配置一个 issue 模板来限制。

创建一个 .github/ISSUE_TEMPLATE/config.yml 文件,比如这样:

blank_issues_enabled: true
contact_links:
  - name: ❗️ 请勿新开 Issue
    url: https://github.com/toFrankie/blog/discussions/342
    about: 阅读文章时,如有任何想法、建议,欢迎底下评论(或在 Discussions 发起讨论),而不是新开 Issue。

在别人 New Issue 的时候,会这样:

我这样配置,他人还是可以创建 blank issue 的,但我想足够了。如果想要彻底关掉 blank_issues_enabled 设为 false

更多请看配置模板选择器