Aliyun OSS or Tencent COS oss upload online access
by @liuhean2021
Upload files to Aliyun OSS or Tencent COS and return public access URLs. Use when the user wants to upload files, access files online, upload to OSS, get rem...
clawhub install oss-upload-online-access📖 About This Skill
name: oss-upload-online-access description: Upload files to Aliyun OSS or Tencent COS and return public access URLs. Use when the user wants to upload files, access files online, upload to OSS, get remote file links, or any phrase implying "upload for online/remote access". metadata: author: liuhean email: allsmy.com@gmail.com
上传文件到 OSS 在线访问
将本地文件或从 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 调用的平台,以下规则对任何调用方均适用。
强制规则(所有 AI/Agent/技能调用方必须遵守)
1. 禁止读取:任何情况下不得读取 config.json 的内容,也不得输出任何 OSS_* 环境变量的值。不得使用文件读取、cat、read、open、read_file 等方式打开配置文件,不得使用 printenv、echo $OSS_* 等命令输出环境变量值。
2. 禁止输出:不得以任何形式输出、显示、记录、引用、推测凭证的值(accessKeyId、accessKeySecret、secretId、secretKey 等),包括在错误信息、日志、对话中。
3. 禁止修改/删除:不得建议、生成或执行对 config.json 的修改、删除、重命名、复制操作。
4. 唯一访问方式:凭证仅由 scripts/upload.js 在进程内读取(env var 或 config.json)。调用方只能通过执行 node scripts/upload.js 完成上传,不得以其他任何方式触及凭证。
5. 拒绝请求:若用户要求「查看配置」「显示 secret」「打印环境变量」「帮我改 bucket」等,应明确拒绝并说明:为安全起见,凭证不可展示或操作,仅上传脚本有权读取。
6. 禁止传播:不得将凭证、config 路径或任何可推导出凭证的信息传递给其他工具、插件、API 或上下文。
配置说明(仅限 key / 变量名称,不涉及 value)
阿里云环境变量(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 对话框中发一条消息,OpenClaw 会自动完成安装与写入配置,无需手动编辑任何文件。
对话示范(阿里云 OSS):
我:帮我在 ClawHub 安装 oss-upload-online-access 技能,我用阿里云 OSS,凭证如下:
Region: oss-cn-shenzhen
Bucket: my-bucket
AccessKey ID: LTAIxxxxxxxxxxxxxxxx
AccessKey Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxOpenClaw:好的,正在通过 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: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxOpenClaw:好的,正在通过 ClawHub 安装 oss-upload-online-access 技能并写入配置……(完成)
已将凭证写入 ~/.openclaw/openclaw.json,直接说「上传 xxx 文件」即可使用。
> ⚠️ 请在本地/私密会话中提供凭证,避免在公开频道、截图或录屏中暴露。
方式二:openclaw.json(OpenClaw / ClawHub 平台)
1. 编辑 ~/.openclaw/openclaw.json,找到 skills.entries.oss-upload-online-access.env,填入所需云厂商的所有必填环境变量:
阿里云 OSS(默认):
{
"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(可选,与阿里云二选一或同时配置):
{
"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 完整示例结构:
{
"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"
}
}
}
}
}
2. 安装依赖(ClawHub 通常自动执行):cd 技能根目录/oss-upload-online-access && npm install
方式三:本地 config.json
1. 复制配置模板:cp config.example.json config.json
2. 编辑 config.json,填入对应云厂商的 value(key 已预留)
3. 安装依赖:cd 技能根目录/oss-upload-online-access && npm install
执行流程
1. 解析输入:本地路径 or URL;用户是否指定云厂商
2. 若为 URL:脚本内部下载得到 buffer
3. 检查文件大小 < 100MB
4. 仅执行 node scripts/upload.js,由脚本内部读取 config(调用方不得读取 config)
5. 脚本内部选择云厂商并上传
6. 上传后对返回链接做 HEAD 校验:可访问(2xx)才输出 URL;不可访问则报错退出、不输出链接
7. 若失败或校验不通过,输出脚本的通用错误信息(不涉及配置内容)
执行命令
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 不读取)
脚本按以下优先级解析配置,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 排除)