TinyOwl
中文
下载

配置教程

在 Mac 上把图片压缩后直传 Cloudflare R2

Cloudflare R2 提供免出站流量费(Zero Egress Fees)的高性能对象存储,非常契合个人网站、开发文档与技术博客。本文介绍如何在 Mac 上将 TinyOwl 与 Cloudflare R2 打通,实现本地 WebP 压缩与云端存储直传的一步到位。

版本说明:本文基于 TinyOwl v0.7.2(macOS 12+,仅支持 Apple 芯片 Mac)撰写。

为什么选择 Cloudflare R2 作为博客图床与媒体底座?

传统云厂商(如 AWS S3)的对象存储在公网下载时往往按 GB 收取不菲的下行流量费(Egress Fee)。一旦文章在技术社区或社交网络走红,随之而来的带宽账单常常令人措手不及。

Cloudflare R2 从底层改变了这一规则:

  • 免公网出站流量费:无论全球读者产生多大下载流量,出站流量费全部为零。
  • 完全兼容 S3 协议:无需学习专有 SDK,标准 S3 客户端与桌面工具即插即用。
  • 一键绑定自定义域名:轻松挂载自有二级域名(如 https://cdn.yourdomain.com)。
  • 按量计费与包含额度:R2 提供每月包含用量,且各存储类型均不收取互联网出口流量费。选择存储类型或估算成本前,请查看 Cloudflare 最新 R2 定价

搭配 TinyOwl,即可形成极具竞争力的发布流水线:图片在 Mac 本机通过 Apple 芯片多核并行压缩转为轻巧的 WebP,随后自动送入 R2,既节省了存储开销,又大幅提升了海内外读者的打开速度。

TinyOwl 工作流编辑器,包含缩放、压缩和上传步骤。
一个工作流可组合可选缩放、必需的压缩和上传目标。

第一步:准备 Cloudflare R2 存储桶与 API 凭据

在打开 TinyOwl 之前,先在 Cloudflare 控制台准备好存储桶与 API 令牌:

1. 创建 R2 存储桶(Bucket)

  1. 登录 Cloudflare 控制台
  2. 在左侧导航栏中点击 R2
  3. 点击 创建存储桶(Create bucket)。
  4. 输入存储桶名称(例如 my-blog-assets,仅限小写字母、数字和中划线)。
  5. 位置建议保留为 自动(Automatic),点击 创建存储桶

2. 生成 R2 S3 API 访问令牌

TinyOwl 通过 R2 的 S3 兼容 API 与之通信:

  1. 在 R2 概览页面右上角,点击 管理 R2 API 令牌(Manage R2 API Tokens)。
  2. 点击 创建 API 令牌
  3. 令牌名称输入如 TinyOwl-Mac-Uploader
  4. 权限选择 对象读写(Object Read & Write)。
  5. 作用域建议选择 仅限于指定存储桶 并选中刚创建的 Bucket。
  6. 点击 创建 API 令牌
  7. 重点:立刻复制并保存页面展示的信息(关闭后密钥将无法再次查看):
    • Access Key ID:32 位十六进制字符串。
    • Secret Access Key:64 位十六进制字符串。
    • Account ID:位于 URL 或 R2 概览右侧的 32 位账户 ID。

3. 绑定自定义域名(推荐)

为了让上传后的文件能够生成直观的公开访问地址:

  1. 进入该 R2 Bucket 的 设置 页面。
  2. 找到 公开访问(Public access),点击 连接域(Connect Domain)。
  3. 输入你的自定义域名或二级域名(如 cdn.example.com)。如果域名由 Cloudflare 托管,系统会自动配置 DNS 解析。
  4. 或者开启 Cloudflare 提供的免费测试二级域名 r2.dev

第二步:在 TinyOwl 中配置 Cloudflare R2

  1. 打开 TinyOwl,按快捷键 ⌘, 进入 设置
  2. 在左侧菜单中切换至 上传目标,点击右上角 添加上传目标
  3. 目标类型选择 Cloudflare R2
  4. 依次填写字段:
    • 名称:如 Cloudflare R2 (博客图床)
    • Bucket:输入 R2 存储桶名称(如 my-blog-assets)。
    • Account ID:粘贴你的 32 位 Cloudflare Account ID(TinyOwl 会自动组装成 S3 Endpoint)。
    • Access Key ID:粘贴 R2 访问令牌的 Access Key ID。
    • Secret Access Key:粘贴 R2 访问令牌的 Secret Access Key。
    • Region:保持默认的 auto
    • Public Base URL:填写公开访问域名,例如 https://cdn.example.com(注意末尾不要加斜杠)。
    • Path Prefix(可选):统一子目录,例如 images
  5. 点击卡片底部的 测试连接
  6. 显示连接成功即代表认证配置无误。
TinyOwl Cloudflare R2 上传目标配置表单,包含账户、存储桶和密钥字段。
只需在 TinyOwl 中保存一次 R2 凭证,即可长期在多个工作流中无感复用。

第三步:构建自动化压缩直传工作流

  1. 在设置中点击 工作流 ➔ 点击 添加工作流
  2. 命名为 博客配图 -> WebP -> R2直传
  3. 配置三个处理环节:
    • 尺寸处理(可选):添加最长边 1600px 预设,避免超大截屏浪费带宽。
    • 压缩(必需):选择内置预设 WebP - 另存为 或设定质量为 均衡 Q75
    • 上传(必需):选择刚刚添加的 Cloudflare R2 (博客图床),路径模板可采用 {yyyy}/{mm}/{dd},文件名策略推荐使用 timestamped(时间戳)或 random(随机命名)。
  4. 点击 启用此工作流

第四步:日常使用与链接复制

现在尝试一次完整流程:

  • 拖放至菜单栏:将屏幕截图直接拖拽到顶部菜单栏的 TinyOwl 图标上。
  • 剪贴板一键处理:在系统截图后,激活 TinyOwl 并敲击 ⌘V

TinyOwl 会在本地内存中完成 WebP 转码,直传至你的 R2 存储桶,并在右下角弹出绿色提示和 复制链接 按钮。

在文章中直接粘贴:

![配图说明](https://cdn.example.com/2026/09/20/img-1726838400.webp)

常见错误排查

报错或异常常见诱因解决对策
测试连接报 403 Forbidden令牌权限不足或 Key 混入空格确保 R2 API 令牌勾选了 Object Read & Write,并检查复制的 Key 是否有多余空格。
测试连接报 404 Not FoundAccount ID 或 Bucket 填写错误确认 32 位 Account ID 正确,且 Bucket 名称与控制台完全一致(区分大小写)。
上传成功但无法点击「复制链接」未填写 Public Base URL在 TinyOwl 上传目标中补全 Public Base URL(如 https://cdn.yourdomain.com)。
公网访问图片提示 XML Access DeniedR2 存储桶未开放公网访问检查 R2 Bucket 设置中的 Public Access,确认自定义域名状态为 Active。

通过 TinyOwl 本地优先架构与 Cloudflare R2 的结合,彻底摆脱每月高昂的第三方图床订阅,在 Mac 上拥有极速、低廉且安全的内容交付体验。