写博客时,图片管理一直是个绕不开的问题。直接把图片放在仓库里虽然省事,但文章一多后会越来越乱,迁移和管理也不方便。

所以很多人会单独搭一个图床,而 PicGo + GitHub 就是比较常见的一种方案:

  • PicGo 负责上传图片
  • GitHub 仓库 负责存储图片
  • jsDelivr 可以作为 CDN 加速访问

这一套搭好后,日常写博客时上传图片会顺手很多,尤其适合 Hexo 博客使用。

1、方案说明

这套方案的核心思路很简单:

  1. 在 GitHub 新建一个专门存图片的仓库
  2. 创建 GitHub Token,授权 PicGo 上传图片
  3. 在 PicGo 中配置仓库信息
  4. 可选接入 jsDelivr,让图片链接访问更快

注意:GitHub 仓库图床适合个人博客、学习记录这类公开内容。
如果图片包含隐私信息,或者你对稳定性、带宽、合规性要求较高,建议使用更专业的对象存储方案。

2、GitHub 仓库设置

2.1、新建仓库

先在 GitHub 新建一个仓库,专门用来存放博客图片。

仓库名可以按自己的习惯来,比如:

  • blog-images
  • hexo-images
  • pic-bed

建议直接设为 Public(公开仓库),这样后续图片外链访问更方便。

2.2、创建 Token 并保存

点击 GitHub 右上角头像,进入设置:

在页面下方找到 Developer settings

然后创建 Token。

这里有两点要注意:

  1. description 可以随便填,方便你自己识别用途
  2. 权限需要保证可以操作目标仓库

如果你使用的是经典 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
![](https://cdn.jsdelivr.net/gh/yourname/blog-images@main/img/test.png)

如果你使用的是 Hexo,这样的外链方式会比把大量图片混在文章目录里更容易管理。

6、常见问题

6.1、上传失败怎么办?

可以先检查下面几项:

  1. 仓库名是不是写成了 用户名/仓库名
  2. 分支名是不是填错了(main / master
  3. Token 是否已经失效
  4. 仓库是否有写入权限
  5. 存储路径是否包含非法字符

6.2、图片能上传,但打不开怎么办?

重点检查:

  1. 仓库是否为公开仓库
  2. 自定义域名是否写错
  3. 分支名和实际仓库分支是否一致
  4. 如果使用 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,这套流程基本可以无缝接进现有写作流程里。


参考文章