hexo博客搭建教程(7):PicGo + GitHub 搭建个人图床工具
写博客时,图片管理一直是个绕不开的问题。直接把图片放在仓库里虽然省事,但文章一多后会越来越乱,迁移和管理也不方便。
所以很多人会单独搭一个图床,而 PicGo + GitHub 就是比较常见的一种方案:
- PicGo 负责上传图片
- GitHub 仓库 负责存储图片
- jsDelivr 可以作为 CDN 加速访问
这一套搭好后,日常写博客时上传图片会顺手很多,尤其适合 Hexo 博客使用。
1、方案说明
这套方案的核心思路很简单:
- 在 GitHub 新建一个专门存图片的仓库
- 创建 GitHub Token,授权 PicGo 上传图片
- 在 PicGo 中配置仓库信息
- 可选接入 jsDelivr,让图片链接访问更快
注意:GitHub 仓库图床适合个人博客、学习记录这类公开内容。
如果图片包含隐私信息,或者你对稳定性、带宽、合规性要求较高,建议使用更专业的对象存储方案。
2、GitHub 仓库设置
2.1、新建仓库
先在 GitHub 新建一个仓库,专门用来存放博客图片。

仓库名可以按自己的习惯来,比如:
blog-imageshexo-imagespic-bed
建议直接设为 Public(公开仓库),这样后续图片外链访问更方便。
2.2、创建 Token 并保存
点击 GitHub 右上角头像,进入设置:

在页面下方找到 Developer settings:

然后创建 Token。

这里有两点要注意:
description可以随便填,方便你自己识别用途- 权限需要保证可以操作目标仓库
如果你使用的是经典 Token,通常需要勾选 repo 权限。
注意:Token 只会显示一次,创建后一定要及时复制保存。
如果后面找不到了,只能重新生成。
3、PicGo 客户端配置
3.1、下载与安装
先安装 PicGo 客户端。
原文这个下载地址现在已经比较旧了,建议优先去 PicGo 官方渠道或项目发布页下载最新版。
如果你已经装好了,可以直接跳过这一步。
3.2、填写 GitHub 图床配置
打开 PicGo,选择 GitHub 图床,按下面的思路填写:

各项配置说明如下:
- 仓库名:
GitHub用户名/仓库名- 例如:
yourname/blog-images
- 例如:
- 分支名:填写仓库实际分支名
- 常见是
main - 如果你的仓库还是旧分支,也可能是
master
- 常见是
- Token:就是刚刚生成并保存的 GitHub Token
- 存储路径:可填可不填
- 不填:图片直接上传到仓库根目录
- 填写后:图片会上传到指定目录,例如
img/、blog/、hexo/
- 自定义域名:这个是重点,决定图片最终生成什么链接
如果你暂时不接 CDN,可以先用 GitHub 原始地址:
1 | https://raw.githubusercontent.com/用户名/仓库名/分支名 |
例如:
1 | https://raw.githubusercontent.com/yourname/blog-images/main |
这样配置后,PicGo 上传图片时就会生成类似这样的地址:
1 | https://raw.githubusercontent.com/yourname/blog-images/main/2026/03/demo.png |
4、推荐补充:接入 jsDelivr CDN
如果你已经把图片放在 GitHub 公开仓库里,那么还可以进一步接入 jsDelivr。
这样做的好处是:
- 图片访问速度通常更好
- 链接更适合直接在博客中使用
- 不需要额外购买服务器或对象存储
4.1、jsDelivr 地址格式
PicGo 里“自定义域名”这一项,可以直接填写成:
1 | https://cdn.jsdelivr.net/gh/用户名/仓库名@分支名 |
例如:
1 | https://cdn.jsdelivr.net/gh/yourname/blog-images@main |
如果你在 PicGo 中设置了存储路径 img/,上传一张 test.png 后,最终生成的图片地址一般类似:
1 | https://cdn.jsdelivr.net/gh/yourname/blog-images@main/img/test.png |
如果没有设置存储路径,就会直接生成:
1 | https://cdn.jsdelivr.net/gh/yourname/blog-images@main/test.png |
4.2、PicGo 里应该怎么填
如果你准备用 GitHub + jsDelivr,推荐这样填:
- 仓库名:
yourname/blog-images - 分支名:
main - Token:你的 GitHub Token
- 存储路径:例如
img/(可选) - 自定义域名:
1 | https://cdn.jsdelivr.net/gh/yourname/blog-images@main |
这样 PicGo 上传完成后,复制出来的就是 jsDelivr CDN 链接,后面写文章时可以直接用。
4.3、使用 jsDelivr 的注意事项
jsDelivr 虽然方便,但也有几个点要提前知道:
① 图片更新后可能有缓存
如果你上传了同名文件并覆盖旧图,CDN 可能不会立刻刷新,短时间内仍然访问到旧版本。
比较稳妥的做法是:
- 尽量不要反复覆盖同名图片
- 给图片带上时间戳或唯一文件名
- 需要强制更新时,再考虑手动刷新缓存
② 仓库必须是公开的
jsDelivr 是基于公开仓库分发内容的,所以你的 GitHub 图片仓库通常需要设为 Public。
③ 不适合敏感内容
无论是 GitHub 仓库还是 jsDelivr CDN,都更适合公开博客图片,不适合存放私密文件。
5、上传图片后的使用方式
配置完成后,后面写文章时只要把图片拖进 PicGo,或者使用 PicGo 的快捷上传方式,就会自动得到图片链接。
然后直接插入到 Markdown 中即可,例如:
1 |  |
如果你使用的是 Hexo,这样的外链方式会比把大量图片混在文章目录里更容易管理。
6、常见问题
6.1、上传失败怎么办?
可以先检查下面几项:
- 仓库名是不是写成了
用户名/仓库名 - 分支名是不是填错了(
main/master) - Token 是否已经失效
- 仓库是否有写入权限
- 存储路径是否包含非法字符
6.2、图片能上传,但打不开怎么办?
重点检查:
- 仓库是否为公开仓库
- 自定义域名是否写错
- 分支名和实际仓库分支是否一致
- 如果使用 jsDelivr,是否遇到了 CDN 缓存延迟
6.3、GitHub 原始地址和 jsDelivr 用哪个?
如果只是能用就行,GitHub 原始地址也能满足基本需求。
如果你希望:
- 图片链接更适合博客直接引用
- 访问体验更稳定一些
- 后续管理更顺手
那更推荐直接用 jsDelivr。
7、补充:安装 Gitee 插件
如果你后面还想尝试其他图床方案,也可以给 PicGo 安装插件。
例如在下面目录中执行命令:
1 | C:\Users\用户名\AppData\Roaming\picgo |
然后安装:
1 | npm install picgo-plugin-gitee |
相关资料:
8、总结
对于个人博客来说,PicGo + GitHub + jsDelivr 是一套成本低、上手快、维护也比较省事的图床方案。
你可以把它理解成:
- GitHub:负责存图
- PicGo:负责上传
- jsDelivr:负责加速访问
如果你本身就在用 Hexo,这套流程基本可以无缝接进现有写作流程里。




