配置教程
在 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,既节省了存储开销,又大幅提升了海内外读者的打开速度。
第一步:准备 Cloudflare R2 存储桶与 API 凭据
在打开 TinyOwl 之前,先在 Cloudflare 控制台准备好存储桶与 API 令牌:
1. 创建 R2 存储桶(Bucket)
- 登录 Cloudflare 控制台。
- 在左侧导航栏中点击 R2。
- 点击 创建存储桶(Create bucket)。
- 输入存储桶名称(例如
my-blog-assets,仅限小写字母、数字和中划线)。 - 位置建议保留为 自动(Automatic),点击 创建存储桶。
2. 生成 R2 S3 API 访问令牌
TinyOwl 通过 R2 的 S3 兼容 API 与之通信:
- 在 R2 概览页面右上角,点击 管理 R2 API 令牌(Manage R2 API Tokens)。
- 点击 创建 API 令牌。
- 令牌名称输入如
TinyOwl-Mac-Uploader。 - 权限选择 对象读写(Object Read & Write)。
- 作用域建议选择 仅限于指定存储桶 并选中刚创建的 Bucket。
- 点击 创建 API 令牌。
- 重点:立刻复制并保存页面展示的信息(关闭后密钥将无法再次查看):
- Access Key ID:32 位十六进制字符串。
- Secret Access Key:64 位十六进制字符串。
- Account ID:位于 URL 或 R2 概览右侧的 32 位账户 ID。
3. 绑定自定义域名(推荐)
为了让上传后的文件能够生成直观的公开访问地址:
- 进入该 R2 Bucket 的 设置 页面。
- 找到 公开访问(Public access),点击 连接域(Connect Domain)。
- 输入你的自定义域名或二级域名(如
cdn.example.com)。如果域名由 Cloudflare 托管,系统会自动配置 DNS 解析。 - 或者开启 Cloudflare 提供的免费测试二级域名
r2.dev。
第二步:在 TinyOwl 中配置 Cloudflare R2
- 打开 TinyOwl,按快捷键
⌘,进入 设置。 - 在左侧菜单中切换至 上传目标,点击右上角 添加上传目标。
- 目标类型选择 Cloudflare R2。
- 依次填写字段:
- 名称:如
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。
- 名称:如
- 点击卡片底部的 测试连接。
- 显示连接成功即代表认证配置无误。
第三步:构建自动化压缩直传工作流
- 在设置中点击 工作流 ➔ 点击 添加工作流。
- 命名为
博客配图 -> WebP -> R2直传。 - 配置三个处理环节:
- 尺寸处理(可选):添加最长边 1600px 预设,避免超大截屏浪费带宽。
- 压缩(必需):选择内置预设 WebP - 另存为 或设定质量为 均衡 Q75。
- 上传(必需):选择刚刚添加的
Cloudflare R2 (博客图床),路径模板可采用{yyyy}/{mm}/{dd},文件名策略推荐使用timestamped(时间戳)或random(随机命名)。
- 点击 启用此工作流。
第四步:日常使用与链接复制
现在尝试一次完整流程:
- 拖放至菜单栏:将屏幕截图直接拖拽到顶部菜单栏的 TinyOwl 图标上。
- 剪贴板一键处理:在系统截图后,激活 TinyOwl 并敲击
⌘V。
TinyOwl 会在本地内存中完成 WebP 转码,直传至你的 R2 存储桶,并在右下角弹出绿色提示和 复制链接 按钮。
在文章中直接粘贴:

常见错误排查
| 报错或异常 | 常见诱因 | 解决对策 |
|---|---|---|
| 测试连接报 403 Forbidden | 令牌权限不足或 Key 混入空格 | 确保 R2 API 令牌勾选了 Object Read & Write,并检查复制的 Key 是否有多余空格。 |
| 测试连接报 404 Not Found | Account ID 或 Bucket 填写错误 | 确认 32 位 Account ID 正确,且 Bucket 名称与控制台完全一致(区分大小写)。 |
| 上传成功但无法点击「复制链接」 | 未填写 Public Base URL | 在 TinyOwl 上传目标中补全 Public Base URL(如 https://cdn.yourdomain.com)。 |
| 公网访问图片提示 XML Access Denied | R2 存储桶未开放公网访问 | 检查 R2 Bucket 设置中的 Public Access,确认自定义域名状态为 Active。 |
通过 TinyOwl 本地优先架构与 Cloudflare R2 的结合,彻底摆脱每月高昂的第三方图床订阅,在 Mac 上拥有极速、低廉且安全的内容交付体验。