Hexo+Typora+GithubAction构建自动化博客

前置说明

本文主要是记录了一下本人在构建博客系统的主要路径,把大致框架写了下来,若读者愿意折腾,也可以按照思路进行构建。由于只有大致流程,并非部署教程,因此请不要按部就班进行构建,部分关键信息均以指路。这里默认读者拥有:

  • 一台自己能够操控的公网服务器
  • 自行查询相关软件文档能力
  • 拥有一定计算机基础能力(linux+git+github+部分工具)
  • 爱折腾

若读者只是希望有一个便宜好用的博客网站,建议尝试github托管,什么是 GitHub Pages? - GitHub 文档

部署Hexo

按照官网的指令一件部署即可,具体部署指令请详见官网:Hexo

1
2
3
4
5
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

部署好后可以自行按照要求加载主题等,请按照各主题文档详细进行配置

配置Typora

打开左上角->文件->偏好设置,点击 图像 并如图进行设置

image-20260207184919764

解决Typora与Hexo图像问题

例如我们现在需要写一篇blog,命名为blog.md,那么其插入图片后树形图:

1
2
3
blog.md
blog
└──img.png

由于Hexo插入图片的格式为![](img.png)详见资源文件夹 | Hexo

而在Typora中插入图片的格式为![](blog/img.png)(是否有./前缀并不重要,可以在偏好设置中调整)

因此两者插入问题会导致在Typora中插入的图像,让Hexo生成时无法正常读取路径,此时比较简单的方法就是安装插件yiyungent/hexo-asset-img: 🍰 Hexo local image plugin. | Hexo 本地图片插件: 转换 图片相对路径 为 asset_img

1
npm install hexo-asset-img --save

同时调整你的配置文件,详细配置见插件作者github页

1
2
3
4
5
6
7
# _config.yml

post_asset_folder: true
marked:
prependRoot: true
postAsset: true
relative_link: false

后续使用请确保插入格式为![](blog/img.png)注意,不要加上./(若你按照上面配置了Typora,则正常插入图片即可)

使用Github Action自动化推送文章

首先创建一个私人的Github仓库,可以选择为仓库配置访问密钥。

本地初始化Post仓库,要点是创建.github/workflows

1
2
3
4
5
6
7
├─.github
│ └─workflows # 重点是
├─CTF-wp # 大类1
│ └─2025-ciscn-wp # 小类1
│ └─2025-ciscn-wp
└─Web
└─爬虫

.github/workflows下创建blog_post.yml文件,该文件配置好后,可以在进行git push后,自动上传博客文章并通过hexo重新生成,确保本地的增删都能在服务器端响应。下面是配置示例,可按照要求自行修改。GitHub Actions 快速入门 - GitHub 文档

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
# blog_post.yml 
name: Blog Post

on:
push:
branches:
- main # 仅在push到main时生效

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Post to server
run: |
echo "${{ secrets.SERVER_SSH_KEY }}" > /tmp/key
chmod 600 /tmp/key

rsync -av --delete \
--exclude '.*' \
$GITHUB_WORKSPACE/ \
admin@${{ secrets.SERVER_HOST }}:/home/admin/blog/source/_posts \
-e "ssh -i /tmp/key -o StrictHostKeyChecking=no -p 22"

rm -f /tmp/key

- name: Start hexo server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: admin
key: ${{ secrets.SERVER_SSH_KEY }}
port: 22
script: |
cd /home/admin/blog
hexo clean
hexo g
# 使用 screen 后台启动
screen -S Blog -X quit 2>/dev/null || true
screen -S Blog -dm hexo s

到此基本完成了博客的构建,本地只需要在编写完博客后,执行一遍git push,即可将博客上传至github,再由 github action自动执行命令,将新文章自动构建进博客中。

后续的一些操作

若读者愿意继续折腾,可以继续:

  • 为博客配置了反向代理,可以通过域名直接访问博客主页
  • 使用certbot自动管理SSL证书
  • 网站备案等(虽然写在这里只有几个字,但是实际上在国内备案是一件非常繁琐的事情)

本文作者:River Cygnus

本文链接:http://example.com/2026/02/08/Geek/blog%E6%9E%84%E5%BB%BA/

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

ESC 关闭 | 导航 | Enter 打开
输入关键词开始搜索