简单来说。 Upgit 是一个可执行文件加一份 TOML 文件。把它放进
PATH,让 Typora 的自定义命令指向它,就能上传了。PicGo 的体量更大:一个用来手动上传的桌面应用,一个用于终端和 Node.js 代码的 PicGo-Core,以及一套处理图床和图片加工的插件系统。如果一条命令就能满足你的全部需求,Upgit 是更轻量的选择。如果你想要图形界面、JavaScript API,或者能处理已有图片和 Markdown 的工具,PicGo 覆盖的范围更广。
要装些什么
Upgit 就是一个二进制文件。upgit init 会生成一份初始配置,之后所有设置都放在这份 TOML 文件和环境变量里:用哪个上传器、文件怎么命名、输出什么格式。除此之外没有别的东西需要运行。
PicGo 分成两部分,可以分别安装:
- 桌面应用,支持拖拽、剪贴板、快捷键或从编辑器上传,保留历史上传的相册,并运行一个本地 HTTP 服务供其他工具调用;
- PicGo-Core,通过 npm 安装,提供
picgo命令和 Node.js API。
两者共用同一套上传器和插件模型,但配置是分开的,所以你实际用哪个就配置哪个。
同样的 Typora 配置,两种做法
Typora 的图片上传设置可以调用这两个工具中的任意一个。用 Upgit 的话,选择自定义命令,在命令输入框里填入 upgit 二进制文件的路径。Typora 会传入本地图片路径,Upgit 用 TOML 里配置的上传器上传,再把 URL 打印出来供 Typora 插入。点验证图片上传选项即可确认是否可用。
用 PicGo 的话,选择 PicGo-Core (command line)——如果 Typora 提供的话也可以选 PicGo.app——剩下的交给 Typora。走 PicGo-Core 这条路时,先运行:
npm install picgo -g
picgo set uploader
Typora 指南详细介绍了这两种方式,以及大家常遇到的报错。
在 Typora 里,两者的效果是一样的。区别体现在 Typora 之外:PicGo 的上传器配置同样被桌面应用、Obsidian 集成和你的脚本所使用。
脚本化
两者都可以在 shell 脚本里调用。差距在于程序内部。
要在 Node.js 里用 Upgit,你得启动一个子进程、传参数、等它退出,再解析 stdout。PicGo-Core 既是命令也是库,文档生成器或者构建步骤可以直接引入它,以返回值的形式拿到 URL:
import { PicGo } from 'picgo'
const picgo = new PicGo()
const result = await picgo.upload(['/abs/path/out/chart.png'])
console.log(result[0].imgUrl)
这是在自动化场景下选择 PicGo 的主要理由:同样的上传器、同样的插件、同样的配置,不用开子进程就能在代码里调用。
扩展能力
Upgit 的 v0.3.0 README 列出了一份相当丰富的内置清单:基于 Git 的存储(包括 GitHub 和 GitLab)、S3 兼容存储和云对象存储、一批托管和自托管的图片服务,外加可配置的 HTTP 配置模板。对很多人来说,这份清单里已经有自己的图床了,而 TOML 可以控制命名、链接改写和输出模板。0.3.0 版本移除了 ext add 命令,所以现在新的图床只能随 Upgit 版本发布,或者由你自己编写 HTTP 配置模板。
PicGo 的模式是包。npm 上任何名为 picgo-plugin-* 的包都可以新增一个上传器(例如 S3、Cloudflare R2 或 MinIO)或者一个处理步骤(压缩、加水印、格式转换)。桌面应用自带插件管理器;PicGo-Core 则用 picgo install <name>。
这一点在图片处理上最为关键。Upgit 的职责是搬运文件、格式化链接。PicGo 可以在上传途中对图片做变换——压缩、加水印、转换格式——因为插件就位于处理流程之中。
迁移已经发布的图片
图床关停或者博客迁移到新存储这种事迟早会发生,到时候 Markdown 里的每个图片链接都得改。PicGo 的 pic-migrater 插件可以处理这件事:它扫描文件,把引用的每张图片重新上传到你当前的图床,并就地改写链接。
picgo install pic-migrater
picgo set plugin pic-migrater
picgo migrate ./posts/
迁移指南介绍了 Obsidian 库的迁移以及各种边界情况。Upgit 的范围是新的上传,所以这件事需要你另写一个脚本。
多台电脑上的配置
Upgit 的配置就是一个文本文件。很容易放进 dotfiles 仓库,token 之类的密钥怎么处理由你自己决定。
PicGo 桌面应用通过 PicGo Cloud 账号提供配置同步:同步上传器设置、插件配置和快捷键,提供自动、服务端加密和端到端加密三种模式。所有套餐都包含这项功能,免费版也不例外。它同步的是设置,不是图片文件,并且不覆盖单独安装的 PicGo-Core。
如果你还没有任何图床,PicGo 还内置了一个可选的 PicGo Cloud 上传器,有免费档,不用先建存储桶或仓库就能开始上传。
什么时候 Upgit 更合适
如果你想要尽可能小的工具,就选 Upgit:PATH 上的一个二进制文件、一份可读的 TOML 文件,再加上 Typora 的自定义命令。upgit --clipboard --output clipboard -f markdown 能把复制的图片直接变成可粘贴的 Markdown,upgit uploaders 可以查看有哪些可用的上传器。如果你的图床在它的清单里,而且你从来不需要图形界面、Node.js API、图片处理或链接迁移,Upgit 就能胜任,要装的东西更少,要学的也更少。
常见问题
问:在 Markdown 工作流里,为什么要选 PicGo 而不是 Upgit?
答:如果你想在命令行之外还有一个桌面应用、一个可以直接引入的 Node.js API、能处理图片的插件,或者一种迁移已有 Markdown 中图片的方法,就选 PicGo。如果一条命令加一份 TOML 文件就能满足你的需求,就选 Upgit。
问:Upgit 只能上传到 GitHub 吗?
答:不是。GitHub 只是初始配置,Upgit v0.3.0 的文档里还列出了 GitLab、S3 兼容存储、云对象存储,以及若干托管或自托管的图片服务。
问:不装桌面应用能用 PicGo 吗?
答:可以。PicGo-Core 是一个独立的 npm 包,提供 picgo 命令和 Node.js API,Typora 可以直接使用它。
问:用 PicGo 必须用 PicGo Cloud 吗?
答:不必。PicGo Cloud 是可选的,PicGo 会上传到你配置的任何服务商。不过配置同步确实需要一个 PicGo Cloud 账号,任何套餐都可以,包括免费版。
如果你用的是 Mac 菜单栏工作流,请看 PicGo 和 uPic 对比。如果 Windows 截图也是你要考虑的因素,请看 PicGo 和 ShareX 对比。
公开资料来源
- PicGo GitHub README
- PicGo 下载
- PicGo-Core GitHub 仓库
- PicGo Markdown 图片迁移插件
- PicGo 配置同步文档
- Upgit README
- Upgit 示例配置
- Upgit 迁移说明
- Upgit 发布版本
- Upgit MIT 许可证
以上资料查阅于 2026 年 9 月。存储服务商的要求、服务限制和插件兼容性都可能变化,安装或迁移前请以链接中的资料为准。