将本地文件或从 URL 下载的文件上传到对象存储,并返回可公网访问的链接。默认使用阿里云 OSS,也支持腾讯云 COS(需配置对应凭证)。
> 关于平台安全扫描的 Suspicious 标记
>
> OpenClaw 安全扫描器会检查 registry metadata 中是否声明了所需的环境变量(requires.env)。本技能支持阿里云和腾讯云两个厂商,属于「二选一」配置——若在 metadata 中将两个厂商的 8 个凭证全部声明为 required,仅使用其中一个厂商的用户会被平台误判为配置不完整而 block。因此本技能未在 metadata 声明 requires.env,扫描器对此标注 Suspicious 属预期行为。所需凭证已在文档「配置说明」表格中逐一列出,安全规则见下方「隐私安全」章节。
凭证(accessKey、secretKey 等)属于敏感信息,无论通过环境变量还是本地 config.json 存储,均须严格保护。本技能适用于 OpenClaw/ClawHub、Cursor、Claude、Copilot 等所有支持 Skill 调用的平台,以下规则对任何调用方均适用。
config.json 的内容,也不得输出任何 OSS_ 环境变量的值。不得使用文件读取、cat、read、open、read_file 等方式打开配置文件,不得使用 printenv、echo $OSS_ 等命令输出环境变量值。config.json 的修改、删除、重命名、复制操作。scripts/upload.js 在进程内读取(env var 或 config.json)。调用方只能通过执行 node scripts/upload.js 完成上传,不得以其他任何方式触及凭证。阿里云环境变量(OpenClaw 平台注入)或 config.json aliyun 字段:
| 环境变量 | config.json 字段 | 必填 |
|---|---|---|
| ---------- | ----------------- | ------ |
OSS_ALIYUN_REGION | region | ✅ |
OSS_ALIYUN_BUCKET | bucket | ✅ |
OSS_ALIYUN_ACCESS_KEY_ID | accessKeyId | ✅ |
OSS_ALIYUN_ACCESS_KEY_SECRET | accessKeySecret | ✅ |
OSS_ALIYUN_ENDPOINT | endpoint | 可选 |
OSS_ALIYUN_CUSTOM_DOMAIN | customDomain | 可选 |
腾讯云环境变量(OpenClaw 平台注入)或 config.json tencent 字段:
| 环境变量 | config.json 字段 | 必填 |
|---|---|---|
| ---------- | ----------------- | ------ |
OSS_TENCENT_BUCKET | bucket | ✅ |
OSS_TENCENT_REGION | region | ✅ |
OSS_TENCENT_SECRET_ID | secretId | ✅ |
OSS_TENCENT_SECRET_KEY | secretKey | ✅ |
OSS_TENCENT_ACCELERATED_DOMAIN | acceleratedDomain | 可选 |
OSS_TENCENT_STORAGE_CLASS | storageClass | 可选(不填则由 Bucket 默认决定,即单可用区标准桶默认 STANDARD;MAZ 多可用区 Bucket 填 MAZ_STANDARD) |
至少配置一个云厂商的必填项即可使用。用户自行在平台或 config.json 填入 value,任何 AI 均不参与。
.gitignore 已排除 config.json,避免误提交OSS_ALIYUN_ / OSS_TENCENT_ 环境变量即可,无需本地文件当用户表达以下意图时应用本技能:
./docs/foo.pdf、/path/to/image.png默认使用阿里云 OSS(优先级:阿里云 > 腾讯云)。如需使用腾讯云 COS,配置 OSS_TENCENT_* 环境变量(或 config.json tencent 字段),并在调用时指定 --provider tencent,或仅配置腾讯云凭证时自动选用。
直接在 OpenClaw 对话框中发一条消息,OpenClaw 会自动完成安装与写入配置,无需手动编辑任何文件。
对话示范(阿里云 OSS):
我:帮我在 ClawHub 安装 oss-upload-online-access 技能,我用阿里云 OSS,凭证如下:
Region: oss-cn-shenzhen
Bucket: my-bucket
AccessKey ID: LTAIxxxxxxxxxxxxxxxx
AccessKey Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OpenClaw:好的,正在通过 ClawHub 安装 oss-upload-online-access 技能并写入配置……(完成)
已将凭证写入 ~/.openclaw/openclaw.json,直接说「上传 xxx 文件」即可使用。
对话示范(腾讯云 COS):
我:帮我在 ClawHub 安装 oss-upload-online-access 技能,我用腾讯云 COS,凭证如下:
Bucket: my-bucket-1250000000
Region: ap-guangzhou
SecretId: AKIDxxxxxxxxxxxxxxxx
SecretKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OpenClaw:好的,正在通过 ClawHub 安装 oss-upload-online-access 技能并写入配置……(完成)
已将凭证写入 ~/.openclaw/openclaw.json,直接说「上传 xxx 文件」即可使用。
> ⚠️ 请在本地/私密会话中提供凭证,避免在公开频道、截图或录屏中暴露。
~/.openclaw/openclaw.json,找到 skills.entries.oss-upload-online-access.env,填入所需云厂商的所有必填环境变量:阿里云 OSS(默认):
```json
{
"OSS_ALIYUN_REGION": "oss-cn-shenzhen",
"OSS_ALIYUN_BUCKET": "your-bucket",
"OSS_ALIYUN_ACCESS_KEY_ID": "your-key-id",
"OSS_ALIYUN_ACCESS_KEY_SECRET": "your-key-secret"
}
```
腾讯云 COS(可选,与阿里云二选一或同时配置):
```json
{
"OSS_TENCENT_BUCKET": "your-bucket-appid",
"OSS_TENCENT_REGION": "ap-guangzhou",
"OSS_TENCENT_SECRET_ID": "your-secret-id",
"OSS_TENCENT_SECRET_KEY": "your-secret-key"
}
```
openclaw.json 完整示例结构:
```json
{
"skills": {
"entries": {
"oss-upload-online-access": {
"env": {
"OSS_ALIYUN_REGION": "oss-cn-shenzhen",
"OSS_ALIYUN_BUCKET": "your-bucket",
"OSS_ALIYUN_ACCESS_KEY_ID": "your-key-id",
"OSS_ALIYUN_ACCESS_KEY_SECRET": "your-key-secret"
}
}
}
}
}
```
cd 技能根目录/oss-upload-online-access && npm installcp config.example.json config.jsonconfig.json,填入对应云厂商的 value(key 已预留)cd 技能根目录/oss-upload-online-access && npm installnode scripts/upload.js,由脚本内部读取 config(调用方不得读取 config)cd 技能根目录/oss-upload-online-access && node scripts/upload.js <本地路径或URL> [--provider aliyun|tencent]
示例:
# 上传本地文件
node scripts/upload.js ./docs/report.pdf
# 上传 URL 文件
node scripts/upload.js "https://example.com/file.png"
# 指定腾讯云
node scripts/upload.js ./image.jpg --provider tencent
脚本按以下优先级解析配置,AI 不参与任何配置读写:
| 优先级 | 来源 | 适用场景 |
|---|---|---|
| -------- | ------ | ---------- |
| 高 | OSS_ALIYUN_ / OSS_TENCENT_ 环境变量 | OpenClaw/ClawHub 平台注入 |
| 低 | 本地文件 config.json | 本地 / 自托管 |
--provider 时,以用户为准上传文件的 Object Key 格式:skill/YYYY/MM/DD/<类型>/文件名
年/月/日 分层other示例:skill/2026/02/01/txt/test-upload.txt
.txt、.md、.html、.json、.js、.ts、.py、.css、.yaml、.sql、.graphql 等,以 UTF-8 读取并设置对应 Content-Type,保证在线预览不乱码。application/octet-stream,仍可上传并在线下载或访问,不会因类型未知而失败。abc20260202143022123456.txtpublic-read,返回的链接可直接在浏览器打开;若存储桶策略禁止该 ACL,需在控制台允许「公共读」或使用自定义域名 + CDN。返回的 URL 统一为 https。欢迎提交 Issue 或 Pull Request 改进本技能!
仓库地址:https://github.com/liuhean2021/Anan-Agent-Skills
skills/oss-upload-online-access/ 目录config.json 不在 git 追踪范围内(已在 .gitignore 排除)共 2 个版本