接入 CFBed Upload Skill: 打通图文并茂自动化写作流

之前通过 hexo-blog-publisher skill 实现了让 OpenClaw 代写博客,现在再让它自己搞定配图。

本文将介绍如何将 cfbed-upload-skill 这个图床上传 skill 接入 OpenClaw 工作流,实现写作、配图、发布的自动化闭环。

前置条件

在开始之前,你需要先在 Cloudflare 平台部署 CloudFlare-ImgBed 图床应用。这是一个基于 Cloudflare Workers 和 R2/KV 存储的免费图床解决方案,支持多种存储后端(Telegram、R2、S3、Discord、HuggingFace 等)。

部署完成后,你将获得:

  • 图床访问地址(如 https://your-cfbed.pages.dev
  • API Token(在后台「系统设置 → 安全设置 → API Token 管理」中生成)

有了这两个关键信息,就可以开始接入 skill 了。

1. 安装 Skill

首先将 skill 克隆到 OpenClaw 的工作目录:

Terminal window
cd ~/.openclaw/workspace
mkdir -p skills
git clone https://github.com/MarSeventh/cfbed-upload-skill.git skills/cfbed-upload-skill

安装完成后,核心文件结构如下:

skills/cfbed-upload-skill/
├── SKILL.md # skill 定义文件,OpenClaw 通过它识别和调用
├── scripts/
│ └── upload.sh # 实际执行上传的脚本
├── .env.example # 环境变量模板
└── README.md

2. 配置环境变量

skill 通过 .env 文件读取配置信息。复制模板并填入你的实际配置:

Terminal window
cd skills/cfbed-upload-skill
cp .env.example .env
vim .env # 或使用你喜欢的编辑器

配置示例:

CFBED_URL=https://your-cfbed.pages.dev
CFBED_TOKEN=your_api_token_here
UPLOAD_CHANNEL=telegram
CHANNEL_NAME=
UPLOAD_FOLDER=

配置字段说明

字段必填说明
CFBED_URL你的 CFBed 图床实例地址,部署后获得
CFBED_TOKENAPI Token,在图床后台「系统设置 → 安全设置 → API Token 管理」中生成
UPLOAD_CHANNEL存储后端类型:telegram / cfr2 / s3 / discord / huggingface
CHANNEL_NAME-多通道场景下指定通道名,单通道留空即可
UPLOAD_FOLDER-服务端文件夹归档路径,不需要分类管理可留空

注意事项:

  • UPLOAD_CHANNEL 必须与你在 CFBed 后台配置的存储后端一致
  • Token 具有时效性,如果上传失败先检查 Token 是否过期
  • .env 文件包含敏感信息,不要提交到 Git 仓库

3. 验证上传链路

配置完成后,先手动测试一次上传流程,确保链路畅通:

Terminal window
cd ~/.openclaw/workspace
# 创建测试目录和文件
mkdir -p exports
echo "CFBed upload test" > exports/test.txt
# 执行上传
bash skills/cfbed-upload-skill/scripts/upload.sh exports/test.txt

如果配置正确,脚本会返回类似这样的公开 URL:

https://your-cfbed.pages.dev/file/test.txt

验证文件可访问性

使用 curl 检查文件是否可以公开访问:

Terminal window
curl -I https://your-cfbed.pages.dev/file/test.txt

预期输出应包含 HTTP/1.1 200 OK,表示文件已成功上传并可访问。

测试图片上传

对于图片文件,可以进一步测试:

Terminal window
# 假设你有一张测试图片
bash skills/cfbed-upload-skill/scripts/upload.sh /path/to/test-image.png
# 将返回的 URL 在浏览器中打开,确认图片正常显示

4. 接入 Hexo 写作流

验证通过后,就可以在 Hexo 写作流程中使用了。OpenClaw 在生成博客文章时,可以自动调用这个 skill 上传图片并获取 URL。

在文章中引用图片

上传后的图片可以直接在 Markdown 文章中引用:

![图片描述](https://your-cfbed.pages.dev/file/image.png)

在 Front Matter 中使用

Hexo 主题通常支持在 Front Matter 中配置封面图和顶部图:

---
title: "文章标题"
cover: "https://your-cfbed.pages.dev/file/cover.png"
top_img: "https://your-cfbed.pages.dev/file/top.png"
---

自动化工作流示例

结合 OpenClaw 的能力,你可以实现这样的自动化流程:

  1. 让 OpenClaw 生成博客文章内容
  2. OpenClaw 自动调用 cfbed-upload-skill 上传配图
  3. 将图片 URL 插入到文章的合适位置
  4. 通过 hexo-blog-publisher skill 发布文章

整个过程无需手动干预,真正实现”一键发布”。

5. 常见问题排查

如果上传失败,按以下顺序逐项排查:

5.1 检查配置文件

Terminal window
cd ~/.openclaw/workspace/skills/cfbed-upload-skill
cat .env

确认:

  • .env 文件是否存在
  • CFBED_URLCFBED_TOKEN 是否填写完整
  • URL 末尾不要有多余的斜杠 /

5.2 验证 Token 有效性

Token 可能过期或权限不足,可以通过 API 测试:

Terminal window
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://your-cfbed.pages.dev/api/v1/auth/verify

如果返回错误,需要在图床后台重新生成 Token。

5.3 检查存储后端配置

确认 .env 中的 UPLOAD_CHANNEL 与图床后台配置的存储后端一致:

  • 如果使用 Telegram,确保已配置 Bot Token 和 Channel ID
  • 如果使用 R2,确保已绑定 R2 存储桶
  • 如果配置了多个通道,需要在 CHANNEL_NAME 中指定具体通道名

5.4 测试文件访问

即使上传成功返回了 URL,也要用 curl 或浏览器实际访问一次:

Terminal window
curl -I https://your-cfbed.pages.dev/file/your-file.png

如果返回 404,可能是:

  • 文件路径配置问题(检查 UPLOAD_FOLDER
  • CDN 缓存未生效(等待几分钟后重试)
  • 存储后端权限问题(检查 Cloudflare 后台配置)

5.5 查看详细日志

在上传脚本中添加 -v 参数查看详细输出:

Terminal window
bash -x skills/cfbed-upload-skill/scripts/upload.sh exports/test.txt

这会显示每一步的执行细节,帮助定位问题。

6. 接入后的实际收益

完成接入后,整个写作流程发生了质的变化:

效率提升

  • 上传-引用一条链路:不再需要手动上传图片、复制链接、粘贴到文章
  • 自动化程度更高:OpenClaw 可以一次性完成”写作 → 配图 → 发布”全流程
  • 减少上下文切换:无需在编辑器、图床网页、文件管理器之间反复切换

资产管理

  • 链接统一管理:所有图片都存储在同一个图床,避免链接散落各处
  • 历史资产可复用:已上传的图片可以在多篇文章中重复引用
  • 迁移成本降低:如果需要更换图床,只需修改 .env 配置即可

稳定性保障

  • 基于 Cloudflare:依托 Cloudflare 的全球 CDN,访问速度快且稳定
  • 免费额度充足:对于个人博客来说,Cloudflare 的免费额度完全够用
  • 多存储后端支持:可以根据需求灵活选择 Telegram、R2、S3 等不同后端

总结

如果你也在使用 OpenClaw + Hexo 的写作组合,强烈推荐接入这个 skill。它的价值不仅仅在于”能上传文件”,而在于把写作、配图、发布这三个环节连成了一个可复用的自动化闭环。

一旦搭建完成,你只需要专注于内容创作本身,剩下的技术细节都可以交给 OpenClaw 处理。这才是 AI 辅助写作的理想状态。


相关资源: