Skip to main content Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Un comando directo omite el prompt de revisión. Revisa el origen antes de ejecutarlo.
npx skills add https://github.com/dvcrn/openclaw-skills-marketplace --skill qiniu-kodoEl comando permanece en una sola línea. Desplázate horizontalmente para revisarlo antes de copiarlo.
¿Prefieres una copia local? Descarga los archivos que SkillsMP tiene disponibles ahora.
Ocupaciones relacionadasSOC
Basado en la clasificación ocupacional SOC
Explorador de archivos
6 archivos| name | qiniu-kodo |
| description | Qiniu KODO Storage Skill |
Qiniu KODO 技能
通过 qiniu-mcp MCP 工具 + Node.js SDK 脚本 + qshell 管理七牛云对象存储和数据处理。
📖 功能说明
核心功能
- 📤 上传文件 - 单文件、批量上传、断点续传
- 📥 下载文件 - 单文件、批量下载
- 📋 列出文件 - 按前缀、分页列出
- 🗑️ 删除文件 - 单文件、批量删除
- 🔗 获取 URL - 公开/私有空间 URL 生成
- 📊 文件信息 - 查看文件详情
- 📁 目录操作 - 移动、复制、重命名
高级功能(通过 MCP 工具)
- 🖼️ 图片处理 - 缩放、裁剪、水印、格式转换
- 🎵 音视频处理 - 转码、截图、切片
- 🔍 智能搜索 - 文件搜索和元数据查询
- 📝 文档处理 - 文档预览、格式转换
🚀 首次使用 — 自动设置
当用户首次要求操作 KODO 时,按以下流程操作:
步骤 1:检查当前状态
{baseDir}/scripts/setup.sh --check-only
检查内容:
- ✅ Node.js 环境
- ✅ qiniu-mcp 是否已安装
- ✅ qshell 是否已安装
- ✅ 配置文件是否存在
- ✅ 凭证是否已配置
如果输出显示一切 OK(qiniu-mcp 已安装、凭证已配置),跳到「执行策略」。
步骤 2:如果未配置,引导用户提供凭证
告诉用户:
我需要你的七牛云凭证来连接 KODO 存储服务。请提供:
AccessKey — 七牛云 AccessKey
SecretKey — 七牛云 SecretKey
Region — 存储区域(如 z0=华东, z1=华北, z2=华南, na0=北美, as0=东南亚)
Bucket — 存储桶名称
Domain(可选) — 访问域名(用于生成文件 URL,如 http://cdn.example.com)
你可以在七牛云控制台获取:
- 密钥管理:https://portal.qiniu.com/user/key
- 存储桶列表:https://portal.qiniu.com/kodo/bucket
- 区域说明:
- z0: 华东(杭州)
- z1: 华北(河北)
- z2: 华南(广州)
- na0: 北美(洛杉矶)
- as0: 东南亚(新加坡)
步骤 3:用户提供凭证后,运行自动设置
{baseDir}/scripts/setup.sh \
--access-key \
--secret-key \
--region \
--bucket \
--domain
"<AccessKey>"
"<SecretKey>"
"<Region>"
"<Bucket>"
"<Domain>"
- ✅ 检查并安装 mcporter(MCP 命令行工具)
- ✅ 检查并安装 qiniu-mcp-server(七牛云官方 MCP 工具)
- ✅ 安装 qiniu Node.js SDK
- ✅ 安装 qshell 命令行工具
- ✅ 创建/更新
~/.mcporter/mcporter.json,写入 qiniu-mcp 服务器配置
- ✅ 将凭证写入 shell 配置文件(
~/.zshrc 或 ~/.bashrc),重启后仍可用
- ✅ 创建配置文件
{baseDir}/config/qiniu-config.json
- ✅ 验证七牛云连接
- ✅ 测试上传下载功能
🎯 执行策略
方式一:qiniu-mcp MCP 工具(优先)
特点: 功能最全,支持存储 + 图片处理 + 音视频处理 + 智能搜索
- 需要图片处理(缩放、裁剪、水印)
- 需要音视频转码
- 需要智能搜索
- 需要文档处理
use_mcp_tool("qiniu-mcp", "upload_file", {
localPath: "/path/to/file.txt",
key: "uploads/file.txt"
})
方式二:Node.js SDK 脚本
- MCP 工具不可用
- 只需要基础存储操作
- 需要自定义处理逻辑
node {baseDir}/scripts/qiniu_node.mjs upload \
--local "/path/to/file.txt" \
--key "uploads/file.txt"
node {baseDir}/scripts/qiniu_node.mjs download \
--key "uploads/file.txt" \
--local "/path/to/file.txt"
node {baseDir}/scripts/qiniu_node.mjs list \
--prefix "uploads/" \
--limit 100
方式三:qshell 命令行(最后备选)
- MCP 和 SDK 都不可用
- 需要批量操作
- 需要高级功能
qshell fput <Bucket> <Key> <LocalFile>
qshell get <Bucket> <Key> <LocalFile>
qshell list <Bucket> <Prefix> <Limit>
qshell qupload <ThreadCount> <SrcDir> <Bucket>
📋 使用示例
示例1:上传备份文件
帮我上传 /backups/daily-20260301.tar.gz 到七牛云
result = use_mcp_tool("qiniu-mcp", "upload_file", {
"localPath": "/backups/daily-20260301.tar.gz",
"key": "backups/daily-20260301.tar.gz"
})
✅ 上传成功!
文件:daily-20260301.tar.gz
大小:15.2 MB
URL:http://your-domain.com/backups/daily-20260301.tar.gz
示例2:列出文件
files = use_mcp_tool("qiniu-mcp", "list_files", {
"prefix": "backups/",
"limit": 100
})
📋 共找到 15 个文件:
backups/backup-20260301.tar.gz - 15.2 MB - 2026-03-01 20:00
backups/backup-20260228.tar.gz - 14.8 MB - 2026-02-28 20:00
backups/backup-20260227.tar.gz - 16.1 MB - 2026-02-27 20:00
...
示例3:获取文件 URL
给我 images/photo.jpg 的访问链接,1小时有效
url = use_mcp_tool("qiniu-mcp", "get_file_url", {
"key": "images/photo.jpg",
"private": true,
"expires": 3600
})
🔗 临时访问链接(1小时有效):
http://your-domain.com/images/photo.jpg?e=1583097600&token=...
示例4:图片处理
把 images/photo.jpg 缩小到 800x600,加水印
url = use_mcp_tool("qiniu-mcp", "process_image", {
"key": "images/photo.jpg",
"operations": [
{"type": "resize", "width": 800, "height": 600},
{"type": "watermark", "text": "OpenClaw", "position": "bottom-right"}
]
})
✅ 图片处理完成!
原图:http://your-domain.com/images/photo.jpg
处理后:http://your-domain.com/images/photo.jpg?imageView2/1/w/800/h/600|watermark/...
示例5:批量删除旧备份
const cutoffDate = Date.now() - (30 * 24 * 60 * 60 * 1000);
const { execSync } = require('child_process');
const files = JSON.parse(execSync('node scripts/qiniu_node.mjs list --prefix "backups/" --format json'));
for (const file of files) {
if (file.mtime * 1000 < cutoffDate) {
execSync(`node scripts/qiniu_node.mjs delete --key ${file.key} --force`);
}
}
🗑️ 已删除 12 个旧备份:
backups/backup-20260115.tar.gz
backups/backup-20260114.tar.gz
...
🔧 API 文档
Node.js SDK 脚本 API
上传文件
node scripts/qiniu_node.mjs upload \
--local <LocalPath> \
--key <RemoteKey> \
[--bucket <Bucket>] \
[--overwrite]
下载文件
node scripts/qiniu_node.mjs download \
--key <RemoteKey> \
--local <LocalPath> \
[--bucket <Bucket>]
列出文件
node scripts/qiniu_node.mjs list \
[--prefix <Prefix>] \
[--limit <Limit>] \
[--delimiter <Delimiter>] \
[--format json|table]
删除文件
node scripts/qiniu_node.mjs delete \
--key <RemoteKey> \
[--bucket <Bucket>] \
[--force]
批量删除
node scripts/qiniu_node.mjs batch-delete \
--file <KeyListFile> \
[--bucket <Bucket>]
获取文件 URL
node scripts/qiniu_node.mjs url \
--key <RemoteKey> \
[--private] \
[--expires <Seconds>]
获取文件信息
node scripts/qiniu_node.mjs stat \
--key <RemoteKey> \
[--bucket <Bucket>]
移动文件
node scripts/qiniu_node.mjs move \
--src-key <SourceKey> \
--dest-key <DestKey> \
[--bucket <Bucket>] \
[--force]
复制文件
node scripts/qiniu_node.mjs copy \
--src-key <SourceKey> \
--dest-key <DestKey> \
[--bucket <Bucket>] \
[--force]
MCP 工具 API
上传文件
use_mcp_tool("qiniu-mcp", "upload_file", {
localPath: string,
key: string,
bucket?: string,
overwrite?: boolean
})
下载文件
use_mcp_tool("qiniu-mcp", "download_file", {
key: string,
localPath: string,
bucket?: string
})
列出文件
use_mcp_tool("qiniu-mcp", "list_files", {
prefix?: string,
limit?: number,
delimiter?: string
})
删除文件
use_mcp_tool("qiniu-mcp", "delete_file", {
key: string,
bucket?: string
})
获取文件 URL
use_mcp_tool("qiniu-mcp", "get_file_url", {
key: string,
private?: boolean,
expires?: number
})
图片处理
use_mcp_tool("qiniu-mcp", "process_image", {
key: string,
operations: [
{
type: "resize",
width: 800,
height: 600,
mode: "fit"
},
{
type: "watermark",
text: "OpenClaw",
position: "bottom-right",
opacity: 0.5
}
]
})
⚙️ 配置文件
config/qiniu-config.json
{
"accessKey": "你的AccessKey",
"secretKey": "你的SecretKey",
"bucket": "你的存储桶名称",
"region": "z0",
"domain": "http://你的域名.com",
"options": {
"use_https": true,
"use_cdn": true,
"timeout": 30,
"upload_threshold": 4194304,
"chunk_size": 4194304,
"retry_times": 3
}
}
配置项说明
| 配置项 | 类型 | 必填 | 说明 |
|---|
| accessKey | string | ✅ | 七牛云 AccessKey |
| secretKey | string | ✅ | 七牛云 SecretKey |
| bucket | string | ✅ | 存储桶名称 |
| region | string | ✅ | 区域代码 |
| domain | string | ❌ | 访问域名 |
| use_https | boolean | ❌ | 使用 HTTPS |
| use_cdn | boolean | ❌ | 使用 CDN |
| timeout | number | ❌ | 超时时间(秒) |
| upload_threshold | number | ❌ | 分片上传阈值(字节) |
| chunk_size | number | ❌ | 分片大小(字节) |
| retry_times | number | ❌ | 重试次数 |
🐛 故障排查
问题1:qiniu-mcp 未安装
bash scripts/setup.sh --install-mcp
npm install -g @qiniu/qiniu-mcp-server
问题2:凭证配置失败
❌ 凭证验证失败:401 Unauthorized
- AccessKey 和 SecretKey 是否正确
- 是否有对应存储桶的权限
- 配置文件格式是否正确
bash scripts/setup.sh \
--access-key "新的AccessKey" \
--secret-key "新的SecretKey" \
--region "z0" \
--bucket "mybucket"
问题3:上传失败
- 网络连接是否正常
- 区域代码是否正确
- 存储桶是否存在
node scripts/qiniu_node.mjs check-config
node scripts/qiniu_node.mjs test-connection
问题4:Node.js SDK 未安装
❌ Cannot find module 'qiniu'
cd /home/node/.openclaw/workspace/skills/qiniu-kodo
npm install qiniu
bash scripts/setup.sh --install-sdk
问题5:qshell 未安装
❌ qshell: command not found
wget https://devtools.qiniu.com/qshell-linux-x64-v2.6.2.zip
unzip qshell-linux-x64-v2.6.2.zip
chmod +x qshell
sudo mv qshell /usr/local/bin/
qshell account <AccessKey> <SecretKey> <Name>
📚 相关文档
🎯 未来计划
👤 作者
- 创建者:33 (AI 助手)
- 创建日期:2026-03-01
- 版本:v1.0.0
- 参考:Tencent Cloud COS 技能架构
📞 支持
📄 许可证