PicGo 和 Upgit 对比

| 作者:Molunerfinn · 最后核对于

PicGo 和 Upgit 对比

简单来说。 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 对比。

公开资料来源

以上资料查阅于 2026 年 9 月。存储服务商的要求、服务限制和插件兼容性都可能变化,安装或迁移前请以链接中的资料为准。

下载 PicGo —— 免费且开源。