Typora 图床最省钱方案:PicGo + Cloudflare R2 一次配好

26 年 1 月 11 日 星期日 (已编辑)
1190 字
6 分钟

Typora 图床最省钱方案:PicGo + Cloudflare R2 一次配好

很多人写博客最头疼的不是内容,而是配图:
截图一多,本地路径乱、迁移麻烦、图床又贵还可能要备案。

这篇文章给你一套「性价比极高、可长期用」的组合:

  • 写作工具:Typora
  • 上传器:PicGo-Core(Typora 内置)
  • 存储:Cloudflare R2(有免费额度、对国内访问也稳定)
  • 原理:R2 兼容 AWS S3 协议 → PicGo 装个 S3 插件就能传

下面按步骤做,小白也能一次搞定。


01|先准备 Cloudflare R2 的 5 个信息

进入 Cloudflare 后台,把这些信息准备好(后面要填到配置文件里):

  1. Bucket Name(桶名):你创建的存储桶名称
  2. Access Key ID:创建 API Key 时生成(只显示一次)
  3. Secret Access Key:同上(只显示一次)
  4. Endpoint(S3 API URL):一般长这样:
    https://<你的账户ID>.r2.cloudflarestorage.com
  5. Public Domain(公开访问域名):非常关键
    • R2 默认是私有桶,你必须绑定域名或开启 r2.dev 子域
    • 否则即使上传成功,Typora 里也会“裂图”(无法预览)

你可以理解为:
上传只是第一步,能“公开访问”才算真正的图床。


02|先安装 PicGo-Core,再在 Typora 里填上传命令

如果你本机还没装 picgo,先执行(两种方式二选一):

bash
npm install picgo -g

# or
yarn global add picgo

安装后建议先确认:

bash
node -v
picgo -v
which node
which picgo

打开 Typora:

  1. PreferencesImage
  2. 插入图片时:选择「上传图片」
  3. 上传服务:选择「自定义服务」
  4. 填写命令(按你机器上的实际路径替换):
bash
/Users/<你的用户名>/.nvm/versions/node/vXX.XX.X/bin/node /Users/<你的用户>/.nvm/versions/node/vXX.XX.X/bin/picgo upload

重点提醒(避免照抄后报错):

  • 你的 Node 版本不一定是 v24.12.0,以 node -vwhich node 为准
  • Mac 路径里的用户名不一定是 xxx,请替换成自己的用户名
  • 你看到的路径也可能是 /opt/homebrew/bin~/.fnm 等,都属于正常情况

然后先别急着成功,下一步要先装插件。


03|安装 S3 插件(PicGo 默认没有 S3)

PicGo-Core 默认不带 S3,需要装 picgo-plugin-s3

先记住一个原则:
你在 Typora 上传命令里用的是哪个 picgo,就给哪个 picgo 装插件。

操作顺序:

  1. 在 Typora 的 Image 设置页,点一次「验证图片上传选项」
  2. 确认你当前使用的是哪一个 picgo
    • 如果你在第 02 节用的是全局安装:先执行 which picgo
    • 如果你用的是 Typora 内置:以 Typora 界面里显示的路径为准
  3. 打开终端,执行(把 <PicGo路径> 换成你自己的真实路径):
bash
"<PicGo路径>" install s3

常见示例 1(全局安装):

bash
"/Users/<你的用户名>/.nvm/versions/node/vXX.XX.X/bin/picgo" install s3

常见示例 2(Typora 内置,路径有空格必须加引号):

bash
"/Users/<你的用户名>/Library/Application Support/Typora/picgo/mac/picgo" install s3

如果你装插件失败,优先确认本机 Node.js 可用(PicGo 插件安装依赖 npm)。


04|修改 config.json(核心配置,复制就行)

回到 Typora 的 Image 设置页,点击「打开配置文件(Open Config File)」最稳妥。

如果你想手动找文件,常见位置如下:

  • macOS(你用全局 picgo 命令):~/.picgo/config.json
  • macOS(你用 Typora 内置 picgo):~/Library/Application Support/Typora/picgo/config.json
    (部分版本也可能是 ~/Library/Application Support/abnerworks.Typora/...
  • Windows(你用全局 picgo 命令):C:\Users\<用户名>\.picgo\config.json
  • Windows(你用 Typora 内置 picgo):C:\Users\<用户名>\AppData\Roaming\Typora\picgo\config.json

config.json 改成下面这样(逐项替换你自己的信息):

json
{
  "picBed": {
    "uploader": "aws-s3",
    "current": "aws-s3",
    "aws-s3": {
      "accessKeyID": "填你的 R2 Access Key ID",
      "secretAccessKey": "填你的 R2 Secret Access Key",
      "bucketName": "填你的 Bucket Name(例如 my-blog-images)",
      "region": "auto",
      "endpoint": "https://<account_id>.r2.cloudflarestorage.com",
      "s3ForcePathStyle": true,
      "disableBucketPrefixToURL": true,
      "uploadPath": "{year}/{month}/{md5}.{extName}",
      "urlPrefix": "https://img.example.com"
    }
  },
  "picgoPlugins": {
    "picgo-plugin-s3": true
  }
}

这里有 3 个最容易填错的点,我直接写清楚:

  • uploader 必须是 aws-s3
  • endpoint 不要在后面拼 bucket 名字,只填到 .com
  • urlPrefix 填你能公开访问的域名(自定义域名或 r2.dev),通常也不需要拼 bucket 名字

05|验证(看到 Typora 里回显图片才算成)

  1. 保存 config.json
  2. 回到 Typora 设置页 → 点「验证图片上传选项(Test Uploader)」
  3. 出现“验证成功”,并且看到回显的图片/Logo,就说明链路完整了:
    Typora → PicGo → R2 上传 → 域名公开访问 → Markdown 回写
image-20260111190611849

常见问题排查(80% 的坑在这里)

1)上传成功但图片裂了

优先检查两点:

  • urlPrefix 是否正确(浏览器能否直接访问你上传后的图片地址)
  • R2 是否开启了公开访问(绑定域名 / 开 r2.dev

2)403 Forbidden

通常是权限或密钥问题:

  • Access Key / Secret 是否填错
  • Token 权限是否包含 Object Read & Write(读写)
  • 桶策略/公开规则是否限制了访问

3)插件安装失败

  • 先确认本机 Node.js 正常(node -v
  • 国内网络可能 npm 源慢:换网络或配置镜像

文章标题:Typora 图床最省钱方案:PicGo + Cloudflare R2 一次配好

文章作者:Jinx

文章链接:https://blog.mytest.cc/posts/typora-picgo-cloudflare-r2-image-hosting[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。