{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tencentcloud-cos-skill",
    "name": "Tencent Cloud COS",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/ShawnMinh/tencentcloud-cos-skill",
    "canonicalUrl": "https://clawhub.ai/ShawnMinh/tencentcloud-cos-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tencentcloud-cos-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tencentcloud-cos-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/setup.sh",
      "scripts/cos_node.mjs",
      "references/api_reference.md",
      "references/config_template.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/tencentcloud-cos-skill"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/tencentcloud-cos-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skill/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "腾讯云 COS 技能",
        "body": "通过 cos-mcp MCP 工具 + Node.js SDK 脚本 + COSCMD 管理腾讯云对象存储和数据万象。"
      },
      {
        "title": "首次使用 — 自动设置",
        "body": "当用户首次要求操作 COS 时，按以下流程操作："
      },
      {
        "title": "步骤 1：检查当前状态",
        "body": "{baseDir}/scripts/setup.sh --check-only\n\n如果输出显示一切 OK（cos-mcp 已安装、凭证已配置），跳到「执行策略」。"
      },
      {
        "title": "步骤 2：如果未配置，引导用户提供凭证",
        "body": "告诉用户：\n\n我需要你的腾讯云凭证来连接 COS 存储服务。请提供：\n\nSecretId — 腾讯云 API 密钥 ID\nSecretKey — 腾讯云 API 密钥 Key\nRegion — 存储桶区域（如 ap-guangzhou）\nBucket — 存储桶名称（格式 name-appid，如 mybucket-1250000000）\nDatasetName（可选） — 数据万象数据集名称（仅智能搜索需要）\nDomain（可选） — 自定义域名，用于替换默认的 COS 访问域名（如 cdn.example.com）\nServiceDomain（可选） — 自定义服务域名，用于自定义 COS API 请求域名\nProtocol（可选） — 协议，如 https 或 http\n\n你可以在 腾讯云控制台 > 访问管理 > API密钥管理 获取密钥，\n在 COS 控制台 查看存储桶信息。\n⚠️ 安全要求：必须使用子账号密钥，仅授予 COS 相关权限（如 QcloudCOSDataFullControl），严禁使用主账号密钥。详见下方「最小权限与子账号密钥」章节。"
      },
      {
        "title": "步骤 3：用户提供凭证后，运行自动设置",
        "body": "推荐方式（凭证不会出现在 shell 历史中）：\n\nexport TENCENT_COS_SECRET_ID=\"<SecretId>\"\nexport TENCENT_COS_SECRET_KEY=\"<SecretKey>\"\nexport TENCENT_COS_REGION=\"<Region>\"\nexport TENCENT_COS_BUCKET=\"<Bucket>\"\n# 可选：\n# export TENCENT_COS_DATASET_NAME=\"<DatasetName>\"\n# export TENCENT_COS_DOMAIN=\"<Domain>\"\n# export TENCENT_COS_SERVICE_DOMAIN=\"<ServiceDomain>\"\n# export TENCENT_COS_PROTOCOL=\"<Protocol>\"\n\n{baseDir}/scripts/setup.sh --from-env\n\n备选方式（凭证会出现在 shell 历史中，不推荐）：\n\n{baseDir}/scripts/setup.sh --secret-id \"<SecretId>\" --secret-key \"<SecretKey>\" --region \"<Region>\" --bucket \"<Bucket>\"\n\n脚本会自动：\n\n检查并本地安装 cos-mcp 和 cos-nodejs-sdk-v5 到项目 node_modules（npm install，非全局）\n检查并本地安装 mcporter 到项目 node_modules（npm install，非全局；通过 npx mcporter 调用）\n将凭证导出到当前 shell session 的环境变量中（不写入 ~/.zshrc / ~/.bashrc）\n创建/更新 ~/.mcporter/mcporter.json，写入 cos-mcp 服务器配置（凭证通过 env 字段传递，权限 600）\n如 coscmd 已安装则配置 ~/.cos.conf（权限 600）；不会自动安装 coscmd\n验证 COS 连接"
      },
      {
        "title": "系统变更摘要",
        "body": "用户安装前应了解 setup.sh 会产生的所有变更：\n\n变更类型具体内容持久性npm 本地安装cos-mcp、cos-nodejs-sdk-v5、mcporter 安装到项目 node_modules/持久（仅限项目目录）项目文件如无 package.json 则创建持久（仅限项目目录）配置文件~/.mcporter/mcporter.json（含凭证）持久（用户主目录）配置文件~/.cos.conf（仅当 coscmd 已安装时）持久（用户主目录）环境变量TENCENT_COS_* export 到当前 session临时（关闭终端失效）\n\n⚠️ 脚本不会：\n\n写入 ~/.zshrc / ~/.bashrc 或任何 shell 启动文件\n执行 npm install -g（全局安装）\n执行 pip install（不自动安装 Python 包）\n修改用户 shell 配置文件的权限\n\n凭证写入的文件（⚠️ 持久化存储凭证会增加暴露风险，详见「安全注意事项」）：\n\n文件内容权限~/.mcporter/mcporter.jsonMCP 服务器配置中的 env 字段含凭证600~/.cos.confcoscmd 配置（仅当 coscmd 已安装时）600\n\n如需完全清理凭证：rm -f ~/.mcporter/mcporter.json ~/.cos.conf\n如需持久化环境变量，用户可自行在 shell 配置中添加 export 语句。\n强烈建议使用子账号最小权限密钥，详见「最小权限与子账号密钥」章节。\n\n设置完成后即可开始使用。"
      },
      {
        "title": "执行策略",
        "body": "三种方式按优先级降级，确保操作始终可完成：\n\n方式一：cos-mcp MCP 工具（优先） — 功能最全，支持存储 + 图片处理 + 智能搜索 + 文档媒体处理\n方式二：Node.js SDK 脚本 — 通过 scripts/cos_node.mjs 执行存储操作\n方式三：COSCMD 命令行 — 通过 shell 命令执行存储操作\n\nmcporter + cos-mcp 可用？（npx mcporter --version && 配置存在）\n  ├─ 是 → 使用方式一 mcporter 调用（全部功能）\n  └─ 否 → cos-mcp MCP 工具可直接调用？（getCosConfig 返回结果）\n              ├─ 是 → 使用方式一直接调用（全部功能）\n              └─ 否 → Node.js + cos-nodejs-sdk-v5 可用？\n                        ├─ 是 → 使用方式二（存储操作）\n                        └─ 否 → coscmd 可用？（which coscmd）\n                                  ├─ 是 → 使用方式三（存储操作）\n                                  └─ 否 → 运行 setup.sh 安装\n\n判断方式一(mcporter)：npx mcporter --version 成功 且 cat ~/.mcporter/mcporter.json | grep cos-mcp 有输出。\n判断方式一(直接)：尝试调用 getCosConfig MCP 工具，若返回结果则可用。\n判断方式二：node -e \"require('cos-nodejs-sdk-v5')\" 成功则可用。\n判断方式三：which coscmd 有输出则可用。"
      },
      {
        "title": "方式一：cos-mcp MCP 工具（优先）",
        "body": "GitHub: https://github.com/Tencent/cos-mcp\n\nMCP 配置模板见 references/config_template.json。"
      },
      {
        "title": "调用格式",
        "body": "通过 mcporter 命令行调用 cos-mcp MCP 工具：\n\nnpx mcporter call cos-mcp.<tool_name> --config ~/.mcporter/mcporter.json --output json [--args '<JSON>']\n\n列出所有可用工具：\n\nnpx mcporter list cos-mcp --config ~/.mcporter/mcporter.json --schema\n\n判断 mcporter 是否可用：npx mcporter --version 成功 且 ~/.mcporter/mcporter.json 包含 cos-mcp 配置。\n如果 mcporter 不可用，可回退到客户端直接调用 MCP 工具（getCosConfig 等）。"
      },
      {
        "title": "工具总览",
        "body": "类别说明存储操作上传、下载、列出、获取签名URL图片处理质量评估、超分辨率、抠图、二维码识别、水印智能搜索以图搜图、文本搜图（需预建数据集）文档媒体文档转PDF、视频智能封面（异步任务）"
      },
      {
        "title": "常用操作",
        "body": "以下示例同时展示两种调用格式。mcporter 格式省略公共前缀 npx mcporter call cos-mcp. 和 --config ~/.mcporter/mcporter.json --output json。\n完整 mcporter 命令：npx mcporter call cos-mcp.<tool> --config ~/.mcporter/mcporter.json --output json --args '<JSON>'\n\n存储\n\n# 上传本地文件（mcporter 格式）\nnpx mcporter call cos-mcp.putObject --config ~/.mcporter/mcporter.json --output json --args '{\"filePath\":\"/path/to/file.jpg\",\"targetDir\":\"images\"}'\n\n# 上传本地文件（客户端直接调用格式）\nputObject  filePath=\"/path/to/file.jpg\"  targetDir=\"images\"\n\n# 上传字符串内容\nputString  content=\"hello world\"  fileName=\"test.txt\"  targetDir=\"docs\"\n\n# 通过 URL 上传\nputObjectSourceUrl  sourceUrl=\"https://example.com/image.png\"  targetDir=\"images\"\n\n# 列出文件\ngetBucket  Prefix=\"images/\"\n\n# 下载文件\ngetObject  objectKey=\"images/photo.jpg\"\n\n# 获取签名下载链接\ngetObjectUrl  objectKey=\"images/photo.jpg\"\n\n图片处理\n\n# 图片质量评估\nassessQuality  objectKey=\"images/photo.jpg\"\n\n# AI 超分辨率\naiSuperResolution  objectKey=\"images/photo.jpg\"\n\n# AI 智能抠图\naiPicMatting  objectKey=\"images/photo.jpg\"\n\n# 二维码识别\naiQrcode  objectKey=\"images/qrcode.jpg\"\n\n# 添加文字水印\nwaterMarkFont  objectKey=\"images/photo.jpg\"  text=\"版权所有\"\n\n# 获取图片元信息\nimageInfo  objectKey=\"images/photo.jpg\"\n\n智能搜索（需预建数据集）\n\n# 以图搜图\nimageSearchPic  uri=\"https://example.com/query.jpg\"\n\n# 文本搜图\nimageSearchText  text=\"蓝天白云\"\n\n文档与媒体处理（异步任务）\n\n# 文档转 PDF\ncreateDocToPdfJob  objectKey=\"docs/report.docx\"\n# 查询任务结果\ndescribeDocProcessJob  jobId=\"<jobId>\"\n\n# 视频智能封面\ncreateMediaSmartCoverJob  objectKey=\"videos/demo.mp4\"\n# 查询任务结果\ndescribeMediaJob  jobId=\"<jobId>\"\n\n工具详细参数定义见 references/api_reference.md。"
      },
      {
        "title": "方式二：Node.js SDK 脚本",
        "body": "官方文档: https://www.tencentcloud.com/zh/document/product/436/8629\n\n当 cos-mcp 不可用时，通过 scripts/cos_node.mjs 执行存储操作。凭证从环境变量读取。\n\n支持的环境变量：\n\nTENCENT_COS_SECRET_ID / TENCENT_COS_SECRET_KEY / TENCENT_COS_REGION / TENCENT_COS_BUCKET（必需）\nTENCENT_COS_DOMAIN / TENCENT_COS_SERVICE_DOMAIN / TENCENT_COS_PROTOCOL（可选，自定义域名）"
      },
      {
        "title": "常用命令",
        "body": "以下省略 node {baseDir}/scripts/cos_node.mjs 前缀。完整格式：node {baseDir}/scripts/cos_node.mjs <action> [options]\n\n# 上传文件\nupload --file /path/to/file.jpg --key remote/path/file.jpg\n\n# 上传字符串\nput-string --content \"文本内容\" --key remote/file.txt --content-type \"text/plain\"\n\n# 下载文件\ndownload --key remote/path/file.jpg --output /path/to/save/file.jpg\n\n# 列出文件\nlist --prefix \"images/\"\n\n# 获取签名 URL\nsign-url --key remote/path/file.jpg --expires 3600\n\n# 查看文件信息\nhead --key remote/path/file.jpg\n\n# 删除文件\ndelete --key remote/path/file.jpg\n\n所有命令输出 JSON 格式，success: true 表示成功，退出码 0。"
      },
      {
        "title": "限制",
        "body": "仅支持存储操作，不支持图片处理、智能搜索、文档转换。"
      },
      {
        "title": "方式三：COSCMD 命令行",
        "body": "官方文档: https://www.tencentcloud.com/zh/document/product/436/10976\n\n当方式一和方式二均不可用时使用。配置持久化在 ~/.cos.conf。\n\n自定义域名支持（有限）：\n\nServiceDomain — 对应 coscmd 的 -e ENDPOINT 参数，设置后 Region 失效\nProtocol — 若为 http，对应 coscmd 的 --do-not-use-ssl 参数\nDomain — COSCMD 不支持 CDN 自定义域名"
      },
      {
        "title": "常用命令",
        "body": "# 上传\ncoscmd upload /path/to/file.jpg remote/path/file.jpg\ncoscmd upload -r /path/to/folder/ remote/folder/\n\n# 下载\ncoscmd download remote/path/file.jpg /path/to/save/file.jpg\ncoscmd download -r remote/folder/ /path/to/save/\n\n# 列出文件\ncoscmd list images/\n\n# 删除\ncoscmd delete remote/path/file.jpg\ncoscmd delete -r remote/folder/ -f\n\n# 签名 URL\ncoscmd signurl remote/path/file.jpg -t 3600\n\n# 文件信息\ncoscmd info remote/path/file.jpg\n\n# 复制/移动\ncoscmd copy <BucketName-APPID>.cos.<Region>.myqcloud.com/source.jpg dest.jpg\ncoscmd move <BucketName-APPID>.cos.<Region>.myqcloud.com/source.jpg dest.jpg"
      },
      {
        "title": "限制",
        "body": "仅支持存储操作，不支持图片处理、智能搜索、文档转换。"
      },
      {
        "title": "功能对照表",
        "body": "功能方式一 cos-mcp方式二 Node SDK方式三 COSCMD上传文件✅✅✅上传字符串/Base64✅✅❌通过 URL 上传✅❌❌下载文件✅✅✅列出文件✅✅✅获取签名 URL✅✅✅删除文件❌✅✅查看文件信息❌✅✅递归上传/下载目录❌❌✅图片处理（CI）✅❌❌智能搜索✅❌❌文档转 PDF✅❌❌视频智能封面✅❌❌"
      },
      {
        "title": "凭证处理策略",
        "body": "setup.sh 在处理凭证时遵循以下原则：\n\n不修改用户的 shell 配置文件：凭证不会写入 ~/.zshrc、~/.bashrc 或其他 shell RC 文件\n环境变量仅当前 session 有效：关闭终端后环境变量失效，需重新 export\n配置文件权限 600：所有写入的配置文件仅当前用户可读写\n不执行全局安装：npm 包安装到项目本地 node_modules/，不使用 npm install -g\n不自动安装系统包：不执行 pip install 或其他系统级包安装"
      },
      {
        "title": "凭证持久化存储与暴露风险",
        "body": "⚠️ 重要安全提示：setup.sh 会将 SecretId/SecretKey 持久化写入磁盘文件。虽然文件权限设为 600（仅当前用户可读写），但持久存储仍增加了凭证暴露风险（如磁盘被窃取、备份泄露、恶意软件读取等）。用户应充分了解此风险。\n\nsetup.sh 运行后，凭证会存储在以下文件中：\n\n文件写入场景存储内容权限风险~/.mcporter/mcporter.json始终写入cos-mcp 服务器配置的 env 字段含 SecretId/SecretKey600凭证明文存储在用户主目录~/.cos.conf仅当 coscmd 已预装时coscmd 配置含 SecretId/SecretKey600凭证明文存储在用户主目录\n\n降低风险的措施：\n\n使用最小权限子账号密钥（见下方详细指导），不要使用主账号密钥\n不再使用时及时清理凭证：rm -f ~/.mcporter/mcporter.json ~/.cos.conf\n定期轮换密钥：在 腾讯云控制台 > 访问管理 > API密钥管理 定期更换密钥\n如条件允许，优先使用**临时凭证（STS Token）**替代永久密钥"
      },
      {
        "title": "安装包供应链风险",
        "body": "本技能通过 npm 安装以下 registry 包（标准 npm 安装，无任意 URL 下载）：\n\ncos-mcp — 腾讯云 COS MCP 服务器\ncos-nodejs-sdk-v5 — 腾讯云 COS Node.js SDK\nmcporter — MCP 命令行工具\n\n这些包来自 npm 公共 registry，与所有 npm 包一样存在供应链风险。建议在安装前通过 npm info <package> 核实包的发布者和版本。"
      },
      {
        "title": "最小权限与子账号密钥（强烈推荐）",
        "body": "⚠️ 永远不要使用主账号密钥。主账号密钥拥有账户下所有资源的完全控制权，一旦泄露后果严重。\n\n推荐创建专用子账号并授予仅限 COS 操作的最小权限策略：\n\n进入 腾讯云控制台 > 访问管理 > 用户列表，创建子用户\n仅授予以下预设策略之一：\n\nQcloudCOSDataReadOnlyAccess — 仅读取（如果只需下载/列出）\nQcloudCOSDataFullControl — COS 数据读写（推荐，如需上传+下载）\n如需数据万象(CI)功能，额外添加 QcloudCIFullAccess\n\n\n可进一步通过自定义策略限制到具体存储桶：\n{\n  \"statement\": [{\n    \"effect\": \"allow\",\n    \"action\": [\"cos:*\"],\n    \"resource\": [\"qcs::cos:<Region>::uid/<APPID>:<BucketName>/*\"]\n  }]\n}\n\n\n为该子账号创建 API 密钥，并使用该密钥配置本技能"
      },
      {
        "title": "临时凭证（STS Token）",
        "body": "对于更高安全要求的场景，建议使用腾讯云 STS 临时凭证：\n\n临时凭证有有效期（默认 1800 秒），过期自动失效\n适合自动化流水线或短期任务场景\ncos-mcp 支持通过环境变量传入 STS Token（设置 TENCENT_COS_TOKEN 环境变量）"
      },
      {
        "title": "其他安全建议",
        "body": "凭证属于敏感信息：SecretId / SecretKey 泄露可导致存储桶数据被窃取或篡改\n推荐使用 --from-env 模式设置凭证，避免凭证出现在 shell 历史记录中\n凭证不明文展示：永远不要在对话中回显用户的 SecretId/SecretKey，引导用户自行通过 setup.sh 或编辑配置文件设置\nmcporter 配置使用 env 方式：凭证通过环境变量传递给子进程，不暴露在 ps aux 进程列表中\n定期轮换密钥：建议每 90 天更换一次 API 密钥，在 控制台 > API密钥管理 操作\n凭证清理：不再使用时执行 rm -f ~/.mcporter/mcporter.json ~/.cos.conf 清除持久化凭证"
      },
      {
        "title": "使用规范",
        "body": "首次使用先运行 {baseDir}/scripts/setup.sh --check-only 检查环境\nmcporter 调用必须带 --config ~/.mcporter/mcporter.json 和 --output json（使用 npx mcporter 调用）\n所有文件路径（objectKey/cospath/--key）为存储桶内的相对路径，如 images/photo.jpg\n图片处理/智能搜索/文档转换仅方式一可用，不可用时明确告知用户\n异步任务（文档转换、视频封面）需通过 jobId 轮询结果\n上传后主动获取链接：上传完成后调用 getObjectUrl 或 sign-url 返回访问链接\n错误处理：调用失败时先用 setup.sh --check-only 诊断环境问题\n方式二脚本源码见 scripts/cos_node.mjs\nMCP 工具详细参数见 references/api_reference.md\nMCP 配置模板见 references/config_template.json"
      }
    ],
    "body": "腾讯云 COS 技能\n\n通过 cos-mcp MCP 工具 + Node.js SDK 脚本 + COSCMD 管理腾讯云对象存储和数据万象。\n\n首次使用 — 自动设置\n\n当用户首次要求操作 COS 时，按以下流程操作：\n\n步骤 1：检查当前状态\n{baseDir}/scripts/setup.sh --check-only\n\n\n如果输出显示一切 OK（cos-mcp 已安装、凭证已配置），跳到「执行策略」。\n\n步骤 2：如果未配置，引导用户提供凭证\n\n告诉用户：\n\n我需要你的腾讯云凭证来连接 COS 存储服务。请提供：\n\nSecretId — 腾讯云 API 密钥 ID\nSecretKey — 腾讯云 API 密钥 Key\nRegion — 存储桶区域（如 ap-guangzhou）\nBucket — 存储桶名称（格式 name-appid，如 mybucket-1250000000）\nDatasetName（可选） — 数据万象数据集名称（仅智能搜索需要）\nDomain（可选） — 自定义域名，用于替换默认的 COS 访问域名（如 cdn.example.com）\nServiceDomain（可选） — 自定义服务域名，用于自定义 COS API 请求域名\nProtocol（可选） — 协议，如 https 或 http\n\n你可以在 腾讯云控制台 > 访问管理 > API密钥管理 获取密钥， 在 COS 控制台 查看存储桶信息。\n\n⚠️ 安全要求：必须使用子账号密钥，仅授予 COS 相关权限（如 QcloudCOSDataFullControl），严禁使用主账号密钥。详见下方「最小权限与子账号密钥」章节。\n\n步骤 3：用户提供凭证后，运行自动设置\n\n推荐方式（凭证不会出现在 shell 历史中）：\n\nexport TENCENT_COS_SECRET_ID=\"<SecretId>\"\nexport TENCENT_COS_SECRET_KEY=\"<SecretKey>\"\nexport TENCENT_COS_REGION=\"<Region>\"\nexport TENCENT_COS_BUCKET=\"<Bucket>\"\n# 可选：\n# export TENCENT_COS_DATASET_NAME=\"<DatasetName>\"\n# export TENCENT_COS_DOMAIN=\"<Domain>\"\n# export TENCENT_COS_SERVICE_DOMAIN=\"<ServiceDomain>\"\n# export TENCENT_COS_PROTOCOL=\"<Protocol>\"\n\n{baseDir}/scripts/setup.sh --from-env\n\n\n备选方式（凭证会出现在 shell 历史中，不推荐）：\n\n{baseDir}/scripts/setup.sh --secret-id \"<SecretId>\" --secret-key \"<SecretKey>\" --region \"<Region>\" --bucket \"<Bucket>\"\n\n\n脚本会自动：\n\n检查并本地安装 cos-mcp 和 cos-nodejs-sdk-v5 到项目 node_modules（npm install，非全局）\n检查并本地安装 mcporter 到项目 node_modules（npm install，非全局；通过 npx mcporter 调用）\n将凭证导出到当前 shell session 的环境变量中（不写入 ~/.zshrc / ~/.bashrc）\n创建/更新 ~/.mcporter/mcporter.json，写入 cos-mcp 服务器配置（凭证通过 env 字段传递，权限 600）\n如 coscmd 已安装则配置 ~/.cos.conf（权限 600）；不会自动安装 coscmd\n验证 COS 连接\n系统变更摘要\n\n用户安装前应了解 setup.sh 会产生的所有变更：\n\n变更类型\t具体内容\t持久性\nnpm 本地安装\tcos-mcp、cos-nodejs-sdk-v5、mcporter 安装到项目 node_modules/\t持久（仅限项目目录）\n项目文件\t如无 package.json 则创建\t持久（仅限项目目录）\n配置文件\t~/.mcporter/mcporter.json（含凭证）\t持久（用户主目录）\n配置文件\t~/.cos.conf（仅当 coscmd 已安装时）\t持久（用户主目录）\n环境变量\tTENCENT_COS_* export 到当前 session\t临时（关闭终端失效）\n\n⚠️ 脚本不会：\n\n写入 ~/.zshrc / ~/.bashrc 或任何 shell 启动文件\n执行 npm install -g（全局安装）\n执行 pip install（不自动安装 Python 包）\n修改用户 shell 配置文件的权限\n\n凭证写入的文件（⚠️ 持久化存储凭证会增加暴露风险，详见「安全注意事项」）：\n\n文件\t内容\t权限\n~/.mcporter/mcporter.json\tMCP 服务器配置中的 env 字段含凭证\t600\n~/.cos.conf\tcoscmd 配置（仅当 coscmd 已安装时）\t600\n\n如需完全清理凭证：rm -f ~/.mcporter/mcporter.json ~/.cos.conf 如需持久化环境变量，用户可自行在 shell 配置中添加 export 语句。 强烈建议使用子账号最小权限密钥，详见「最小权限与子账号密钥」章节。\n\n设置完成后即可开始使用。\n\n执行策略\n\n三种方式按优先级降级，确保操作始终可完成：\n\n方式一：cos-mcp MCP 工具（优先） — 功能最全，支持存储 + 图片处理 + 智能搜索 + 文档媒体处理\n方式二：Node.js SDK 脚本 — 通过 scripts/cos_node.mjs 执行存储操作\n方式三：COSCMD 命令行 — 通过 shell 命令执行存储操作\nmcporter + cos-mcp 可用？（npx mcporter --version && 配置存在）\n  ├─ 是 → 使用方式一 mcporter 调用（全部功能）\n  └─ 否 → cos-mcp MCP 工具可直接调用？（getCosConfig 返回结果）\n              ├─ 是 → 使用方式一直接调用（全部功能）\n              └─ 否 → Node.js + cos-nodejs-sdk-v5 可用？\n                        ├─ 是 → 使用方式二（存储操作）\n                        └─ 否 → coscmd 可用？（which coscmd）\n                                  ├─ 是 → 使用方式三（存储操作）\n                                  └─ 否 → 运行 setup.sh 安装\n\n\n判断方式一(mcporter)：npx mcporter --version 成功 且 cat ~/.mcporter/mcporter.json | grep cos-mcp 有输出。 判断方式一(直接)：尝试调用 getCosConfig MCP 工具，若返回结果则可用。 判断方式二：node -e \"require('cos-nodejs-sdk-v5')\" 成功则可用。 判断方式三：which coscmd 有输出则可用。\n\n方式一：cos-mcp MCP 工具（优先）\n\nGitHub: https://github.com/Tencent/cos-mcp\n\nMCP 配置模板见 references/config_template.json。\n\n调用格式\n\n通过 mcporter 命令行调用 cos-mcp MCP 工具：\n\nnpx mcporter call cos-mcp.<tool_name> --config ~/.mcporter/mcporter.json --output json [--args '<JSON>']\n\n\n列出所有可用工具：\n\nnpx mcporter list cos-mcp --config ~/.mcporter/mcporter.json --schema\n\n\n判断 mcporter 是否可用：npx mcporter --version 成功 且 ~/.mcporter/mcporter.json 包含 cos-mcp 配置。 如果 mcporter 不可用，可回退到客户端直接调用 MCP 工具（getCosConfig 等）。\n\n工具总览\n类别\t说明\n存储操作\t上传、下载、列出、获取签名URL\n图片处理\t质量评估、超分辨率、抠图、二维码识别、水印\n智能搜索\t以图搜图、文本搜图（需预建数据集）\n文档媒体\t文档转PDF、视频智能封面（异步任务）\n常用操作\n\n以下示例同时展示两种调用格式。mcporter 格式省略公共前缀 npx mcporter call cos-mcp. 和 --config ~/.mcporter/mcporter.json --output json。 完整 mcporter 命令：npx mcporter call cos-mcp.<tool> --config ~/.mcporter/mcporter.json --output json --args '<JSON>'\n\n存储\n# 上传本地文件（mcporter 格式）\nnpx mcporter call cos-mcp.putObject --config ~/.mcporter/mcporter.json --output json --args '{\"filePath\":\"/path/to/file.jpg\",\"targetDir\":\"images\"}'\n\n# 上传本地文件（客户端直接调用格式）\nputObject  filePath=\"/path/to/file.jpg\"  targetDir=\"images\"\n\n# 上传字符串内容\nputString  content=\"hello world\"  fileName=\"test.txt\"  targetDir=\"docs\"\n\n# 通过 URL 上传\nputObjectSourceUrl  sourceUrl=\"https://example.com/image.png\"  targetDir=\"images\"\n\n# 列出文件\ngetBucket  Prefix=\"images/\"\n\n# 下载文件\ngetObject  objectKey=\"images/photo.jpg\"\n\n# 获取签名下载链接\ngetObjectUrl  objectKey=\"images/photo.jpg\"\n\n图片处理\n# 图片质量评估\nassessQuality  objectKey=\"images/photo.jpg\"\n\n# AI 超分辨率\naiSuperResolution  objectKey=\"images/photo.jpg\"\n\n# AI 智能抠图\naiPicMatting  objectKey=\"images/photo.jpg\"\n\n# 二维码识别\naiQrcode  objectKey=\"images/qrcode.jpg\"\n\n# 添加文字水印\nwaterMarkFont  objectKey=\"images/photo.jpg\"  text=\"版权所有\"\n\n# 获取图片元信息\nimageInfo  objectKey=\"images/photo.jpg\"\n\n智能搜索（需预建数据集）\n# 以图搜图\nimageSearchPic  uri=\"https://example.com/query.jpg\"\n\n# 文本搜图\nimageSearchText  text=\"蓝天白云\"\n\n文档与媒体处理（异步任务）\n# 文档转 PDF\ncreateDocToPdfJob  objectKey=\"docs/report.docx\"\n# 查询任务结果\ndescribeDocProcessJob  jobId=\"<jobId>\"\n\n# 视频智能封面\ncreateMediaSmartCoverJob  objectKey=\"videos/demo.mp4\"\n# 查询任务结果\ndescribeMediaJob  jobId=\"<jobId>\"\n\n\n工具详细参数定义见 references/api_reference.md。\n\n方式二：Node.js SDK 脚本\n\n官方文档: https://www.tencentcloud.com/zh/document/product/436/8629\n\n当 cos-mcp 不可用时，通过 scripts/cos_node.mjs 执行存储操作。凭证从环境变量读取。\n\n支持的环境变量：\n\nTENCENT_COS_SECRET_ID / TENCENT_COS_SECRET_KEY / TENCENT_COS_REGION / TENCENT_COS_BUCKET（必需）\nTENCENT_COS_DOMAIN / TENCENT_COS_SERVICE_DOMAIN / TENCENT_COS_PROTOCOL（可选，自定义域名）\n常用命令\n\n以下省略 node {baseDir}/scripts/cos_node.mjs 前缀。完整格式：node {baseDir}/scripts/cos_node.mjs <action> [options]\n\n# 上传文件\nupload --file /path/to/file.jpg --key remote/path/file.jpg\n\n# 上传字符串\nput-string --content \"文本内容\" --key remote/file.txt --content-type \"text/plain\"\n\n# 下载文件\ndownload --key remote/path/file.jpg --output /path/to/save/file.jpg\n\n# 列出文件\nlist --prefix \"images/\"\n\n# 获取签名 URL\nsign-url --key remote/path/file.jpg --expires 3600\n\n# 查看文件信息\nhead --key remote/path/file.jpg\n\n# 删除文件\ndelete --key remote/path/file.jpg\n\n\n所有命令输出 JSON 格式，success: true 表示成功，退出码 0。\n\n限制\n\n仅支持存储操作，不支持图片处理、智能搜索、文档转换。\n\n方式三：COSCMD 命令行\n\n官方文档: https://www.tencentcloud.com/zh/document/product/436/10976\n\n当方式一和方式二均不可用时使用。配置持久化在 ~/.cos.conf。\n\n自定义域名支持（有限）：\n\nServiceDomain — 对应 coscmd 的 -e ENDPOINT 参数，设置后 Region 失效\nProtocol — 若为 http，对应 coscmd 的 --do-not-use-ssl 参数\nDomain — COSCMD 不支持 CDN 自定义域名\n常用命令\n# 上传\ncoscmd upload /path/to/file.jpg remote/path/file.jpg\ncoscmd upload -r /path/to/folder/ remote/folder/\n\n# 下载\ncoscmd download remote/path/file.jpg /path/to/save/file.jpg\ncoscmd download -r remote/folder/ /path/to/save/\n\n# 列出文件\ncoscmd list images/\n\n# 删除\ncoscmd delete remote/path/file.jpg\ncoscmd delete -r remote/folder/ -f\n\n# 签名 URL\ncoscmd signurl remote/path/file.jpg -t 3600\n\n# 文件信息\ncoscmd info remote/path/file.jpg\n\n# 复制/移动\ncoscmd copy <BucketName-APPID>.cos.<Region>.myqcloud.com/source.jpg dest.jpg\ncoscmd move <BucketName-APPID>.cos.<Region>.myqcloud.com/source.jpg dest.jpg\n\n限制\n\n仅支持存储操作，不支持图片处理、智能搜索、文档转换。\n\n功能对照表\n功能\t方式一 cos-mcp\t方式二 Node SDK\t方式三 COSCMD\n上传文件\t✅\t✅\t✅\n上传字符串/Base64\t✅\t✅\t❌\n通过 URL 上传\t✅\t❌\t❌\n下载文件\t✅\t✅\t✅\n列出文件\t✅\t✅\t✅\n获取签名 URL\t✅\t✅\t✅\n删除文件\t❌\t✅\t✅\n查看文件信息\t❌\t✅\t✅\n递归上传/下载目录\t❌\t❌\t✅\n图片处理（CI）\t✅\t❌\t❌\n智能搜索\t✅\t❌\t❌\n文档转 PDF\t✅\t❌\t❌\n视频智能封面\t✅\t❌\t❌\n安全注意事项\n凭证处理策略\n\nsetup.sh 在处理凭证时遵循以下原则：\n\n不修改用户的 shell 配置文件：凭证不会写入 ~/.zshrc、~/.bashrc 或其他 shell RC 文件\n环境变量仅当前 session 有效：关闭终端后环境变量失效，需重新 export\n配置文件权限 600：所有写入的配置文件仅当前用户可读写\n不执行全局安装：npm 包安装到项目本地 node_modules/，不使用 npm install -g\n不自动安装系统包：不执行 pip install 或其他系统级包安装\n凭证持久化存储与暴露风险\n\n⚠️ 重要安全提示：setup.sh 会将 SecretId/SecretKey 持久化写入磁盘文件。虽然文件权限设为 600（仅当前用户可读写），但持久存储仍增加了凭证暴露风险（如磁盘被窃取、备份泄露、恶意软件读取等）。用户应充分了解此风险。\n\nsetup.sh 运行后，凭证会存储在以下文件中：\n\n文件\t写入场景\t存储内容\t权限\t风险\n~/.mcporter/mcporter.json\t始终写入\tcos-mcp 服务器配置的 env 字段含 SecretId/SecretKey\t600\t凭证明文存储在用户主目录\n~/.cos.conf\t仅当 coscmd 已预装时\tcoscmd 配置含 SecretId/SecretKey\t600\t凭证明文存储在用户主目录\n\n降低风险的措施：\n\n使用最小权限子账号密钥（见下方详细指导），不要使用主账号密钥\n不再使用时及时清理凭证：rm -f ~/.mcporter/mcporter.json ~/.cos.conf\n定期轮换密钥：在 腾讯云控制台 > 访问管理 > API密钥管理 定期更换密钥\n如条件允许，优先使用**临时凭证（STS Token）**替代永久密钥\n安装包供应链风险\n\n本技能通过 npm 安装以下 registry 包（标准 npm 安装，无任意 URL 下载）：\n\ncos-mcp — 腾讯云 COS MCP 服务器\ncos-nodejs-sdk-v5 — 腾讯云 COS Node.js SDK\nmcporter — MCP 命令行工具\n\n这些包来自 npm 公共 registry，与所有 npm 包一样存在供应链风险。建议在安装前通过 npm info <package> 核实包的发布者和版本。\n\n最小权限与子账号密钥（强烈推荐）\n\n⚠️ 永远不要使用主账号密钥。主账号密钥拥有账户下所有资源的完全控制权，一旦泄露后果严重。\n\n推荐创建专用子账号并授予仅限 COS 操作的最小权限策略：\n\n进入 腾讯云控制台 > 访问管理 > 用户列表，创建子用户\n仅授予以下预设策略之一：\nQcloudCOSDataReadOnlyAccess — 仅读取（如果只需下载/列出）\nQcloudCOSDataFullControl — COS 数据读写（推荐，如需上传+下载）\n如需数据万象(CI)功能，额外添加 QcloudCIFullAccess\n可进一步通过自定义策略限制到具体存储桶：\n{\n  \"statement\": [{\n    \"effect\": \"allow\",\n    \"action\": [\"cos:*\"],\n    \"resource\": [\"qcs::cos:<Region>::uid/<APPID>:<BucketName>/*\"]\n  }]\n}\n\n为该子账号创建 API 密钥，并使用该密钥配置本技能\n临时凭证（STS Token）\n\n对于更高安全要求的场景，建议使用腾讯云 STS 临时凭证：\n\n临时凭证有有效期（默认 1800 秒），过期自动失效\n适合自动化流水线或短期任务场景\ncos-mcp 支持通过环境变量传入 STS Token（设置 TENCENT_COS_TOKEN 环境变量）\n其他安全建议\n凭证属于敏感信息：SecretId / SecretKey 泄露可导致存储桶数据被窃取或篡改\n推荐使用 --from-env 模式设置凭证，避免凭证出现在 shell 历史记录中\n凭证不明文展示：永远不要在对话中回显用户的 SecretId/SecretKey，引导用户自行通过 setup.sh 或编辑配置文件设置\nmcporter 配置使用 env 方式：凭证通过环境变量传递给子进程，不暴露在 ps aux 进程列表中\n定期轮换密钥：建议每 90 天更换一次 API 密钥，在 控制台 > API密钥管理 操作\n凭证清理：不再使用时执行 rm -f ~/.mcporter/mcporter.json ~/.cos.conf 清除持久化凭证\n使用规范\n首次使用先运行 {baseDir}/scripts/setup.sh --check-only 检查环境\nmcporter 调用必须带 --config ~/.mcporter/mcporter.json 和 --output json（使用 npx mcporter 调用）\n所有文件路径（objectKey/cospath/--key）为存储桶内的相对路径，如 images/photo.jpg\n图片处理/智能搜索/文档转换仅方式一可用，不可用时明确告知用户\n异步任务（文档转换、视频封面）需通过 jobId 轮询结果\n上传后主动获取链接：上传完成后调用 getObjectUrl 或 sign-url 返回访问链接\n错误处理：调用失败时先用 setup.sh --check-only 诊断环境问题\n方式二脚本源码见 scripts/cos_node.mjs\nMCP 工具详细参数见 references/api_reference.md\nMCP 配置模板见 references/config_template.json"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ShawnMinh/tencentcloud-cos-skill",
    "publisherUrl": "https://clawhub.ai/ShawnMinh/tencentcloud-cos-skill",
    "owner": "ShawnMinh",
    "version": "1.0.8",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/tencentcloud-cos-skill",
    "agentUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skill/agent.md"
  }
}