诶嘿

今天一时兴起,想把hexo与github自带的主页看看能不能融合一下,好充分利用一下我写的乱七八糟的东西。

就查阅了一下:

  1. Hexo结合github搭建个人博客

  2. 使用hexo+github搭建免费个人博客详细教程

主要用的就是第二篇。
我简单题几条我自己做的改进。

  1. 使用github时单独为博客建立一个仓库,之后用git管理,这并不影响hexo直接部署到github的个人主页上这个问题。如果不希望自己的源码被别人看到,可以设置成private的仓库。

  2. 在加载其他主题的时候我更建议使用git submodule来实现,而不是使用git clone
    这样更方便后续跟进更新。

或许用fork更好?用git submodule的话我想要自己对主题做一些更改好像不太好存储啊?没太想好,之后又机会再研究吧。

  1. 还没想好如何解决插入图片的问题。

其他查阅的资料

Hexo git deployer删除了提交历史记录该怎么办?

插入图片得到了解决!!!

我不打算为图床付费,而且也不指望国内的图床能够长久使用,所以我打算用github作为图床。(有一些图片之前上传的还在github上,但是新的图片我都上传到自己部署的图床了。)

我平时还是有一点整理笔记的习惯,本来打算用博客简单替代整理过的笔记,但是很多时候自己搭的博客很不方便。就比如图片上传,如果全人工手动上传再将连接添加到md文件中,真的很短节奏和费力,所以我的博客搭建也就暂时搁置了,继续在使用notion。

但是最近兴致起来了,又查了查,结合着typora(毕竟是付费购买了的),还是有再把博客搞起来的机会。

PicGo

我使用了PicGo这款软件来帮助我管理我博客的图片。由于是macos运行PicGo的时候还遇到了点问题(忘了啥问题了,反正后面有解决方案),解决方案

参考文献:

hexo + typora 图片插入解决办法

Typora+hexo发布博客

友链咋回事没弄明白

本地生成没啥难度,远程拉取是什么玩意,官方文档内容不够详细啊,感觉。

看板娘

之前看到不少博客里有看板娘,也想自己也搞一个试试。但查了查感觉自己进了个大坑,尤其是我这种完全不熟悉前端的。

放两个文章,有时间有机会再看吧,感觉需要一些时间理解理解。

快来给你的Hexo博客招募亿只live2d看板娘吧(๑•̀ㅂ•́)و✧❤️

网页添加 Live2D 看板娘

第二篇更重要些,讲API和换装功能。

这篇还没看,也是讲看板娘的

Live2D Widget

live2d-widget

给你的hexo添加live2D看板娘

持续集成与部署

之前每次改博客都要手动去生成部署,挺麻烦的,但是就部署到github上就那么用着了。但是后来我自己搞了个服务器,然后打算同时部署到这两个上面,一个一个手动部署属实太折磨人了,正好了解了一些CI/CD的思想(了解的少到都算不上知识),就打算利用一下github的actions来持续自动化部署我的博客。

我的博客的代码保存在github下的blog仓库,这是一个私有仓库。而要发布部署的内容则会同时发送到我自己的服务器以及github page上。

由于是跨仓库,以及在远端服务器上使用,所以是用到了github的deploy key,而没有使用github token。

github的actions保存在.github/workflows/下,是一个yaml文件。给出一个我自己的例子吧,这个配置完全可以llm自动生成,我的就是AI生成大概模板后自己改的。

为了能读取到每个文件最后的commit时间(用以更新博客的最后更新时间),我还加入了一些专属的配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
name: Deploy Hexo

on:
push:
branches: [ public ]

permissions:
contents: write # 允许读写仓库内容
pages: write # 允许读写 GitHub Pages

jobs:
build-deploy:
runs-on: ubuntu-latest

steps:
# 1. 拉取完整代码和历史
- name: Checkout repository
uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0 # ← 必须,保证插件能读取到所有 commit 时间

# 2. 安装 Node.js
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'

# 3. 安装依赖(包含 hexo-filter-date-from-git)
- name: Install dependencies
run: |
npm ci
# 如果你还没在 package.json 里声明插件依赖,可以取消下面这一行注释:
# npm install hexo-filter-date-from-git --save

# 4. 生成静态站点(此时 hexo-filter-date-from-git 会生效)
- name: Generate static files
run: npx hexo generate

# 5. 部署到自有服务器(Rsync)
- name: Deploy via Rsync to my server
env:
SSH_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keyscan -t rsa moliyue.xyz >> ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
echo "$SSH_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
rsync -avz -e "ssh -p 22" public/ root@moliyue.xyz:/root/workspace/nginx/hexo/

# 6. 同步到另一仓库的 GitHub Pages(peaceiris/action)
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.DEPLOY_KEY }}
external_repository: MoLiYue/MoLiYue.github.io
publish_branch: master
publish_dir: ./public