{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tencentcloud-cos-skills",
    "name": "Tencent Cloud COS",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/ShawnMinh/tencentcloud-cos-skills",
    "canonicalUrl": "https://clawhub.ai/ShawnMinh/tencentcloud-cos-skills",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tencentcloud-cos-skills",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tencentcloud-cos-skills",
    "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-skills"
    },
    "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-skills",
    "agentPageUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skills/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skills/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skills/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⚠️ 重要安全说明：本技能需要腾讯云云基础设施主凭证（SecretId/SecretKey），\n这些凭证可访问你的 COS 对象存储和数据万象 API。凭证泄露可能导致存储桶数据被窃取或篡改。\n默认安全行为：凭证仅存于当前终端会话的环境变量中，不会写入任何磁盘文件。\n关闭终端后凭证自动消失。\n🔒 推荐方案：STS 临时凭证（有效期短，过期自动失效）\n如果你已有 STS 临时凭证，请提供：\n\nSecretId — 临时密钥 ID（STS 返回的 TmpSecretId）\nSecretKey — 临时密钥 Key（STS 返回的 TmpSecretKey）\nToken — 临时安全令牌（STS 返回的 SecurityToken）\nRegion — 存储桶区域（如 ap-guangzhou）\nBucket — 存储桶名称（格式 name-appid，如 mybucket-1250000000）\n\n获取方式：通过 腾讯云 STS 服务 获取临时凭证。\n⚠️ 降级方案：永久密钥\n如果无法使用 STS，可提供永久密钥：\n\nSecretId — 腾讯云 API 密钥 ID\nSecretKey — 腾讯云 API 密钥 Key\nRegion — 存储桶区域（如 ap-guangzhou）\nBucket — 存储桶名称（格式 name-appid，如 mybucket-1250000000）\n\n默认情况下永久密钥也不会持久化到磁盘。如果你需要使用方式一（mcporter），\n需显式加 --persist 标志，此时凭证才会写入 ~/.mcporter/mcporter.json（权限 600）。\n⚠️ 持久化凭证到磁盘的风险（仅 --persist 模式）：\n\n磁盘被窃取/备份泄露时凭证暴露\n恶意软件可能读取明文凭证\n凭证不会自动过期，需手动清理\n\n必须使用子账号密钥，仅授予 COS 相关权限（如 QcloudCOSDataFullControl），严禁使用主账号密钥。\n可选配置（两种方案均适用）\n\nDatasetName（可选） — 数据万象数据集名称（仅智能搜索需要）\nDomain（可选） — 自定义域名，用于替换默认的 COS 访问域名（如 cdn.example.com）\nServiceDomain（可选） — 自定义服务域名，用于自定义 COS API 请求域名\nProtocol（可选） — 协议，如 https 或 http\n\n你可以在 腾讯云控制台 > 访问管理 > API密钥管理 获取密钥，\n在 COS 控制台 查看存储桶信息。"
      },
      {
        "title": "步骤 3：用户提供凭证后，运行自动设置",
        "body": "STS 临时凭证模式（推荐 — 默认不持久化到磁盘）：\n\nexport TENCENT_COS_SECRET_ID=\"<TmpSecretId>\"\nexport TENCENT_COS_SECRET_KEY=\"<TmpSecretKey>\"\nexport TENCENT_COS_TOKEN=\"<SecurityToken>\"\nexport TENCENT_COS_REGION=\"<Region>\"\nexport TENCENT_COS_BUCKET=\"<Bucket>\"\n# 可选：\n# export TENCENT_COS_DATASET_NAME=\"<DatasetName>\"\n\n{baseDir}/scripts/setup.sh --from-env\n\n默认行为：\n\n✅ 凭证仅存在于当前 shell session 的环境变量中\n✅ 不写入 ~/.mcporter/mcporter.json 或任何磁盘文件\n✅ 关闭终端后凭证自动消失\n⚠️ 方式一（mcporter）需要配置文件，默认模式下不可用；如需使用请加 --persist\n\n永久密钥模式（默认也不持久化到磁盘）：\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显式持久化模式（仅当需要方式一 mcporter 时使用，需用户确认风险）：\n\n{baseDir}/scripts/setup.sh --from-env --persist\n\n⚠️ --persist 会将凭证以明文写入 ~/.mcporter/mcporter.json（权限 600），\n可能因磁盘窃取、备份泄露、恶意软件等方式暴露。仅在确实需要方式一时使用。\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默认模式：仅设置环境变量，不写入任何配置文件到磁盘\n--persist 模式：创建/更新 ~/.mcporter/mcporter.json，写入 cos-mcp 服务器配置（凭证通过 env 字段传递，权限 600）\n如 coscmd 已安装则配置 ~/.cos.conf（权限 600，仅 --persist 模式）；不会自动安装 coscmd\n验证 COS 连接"
      },
      {
        "title": "系统变更摘要",
        "body": "用户安装前应了解 setup.sh 会产生的所有变更：\n\n默认模式（推荐 — 凭证不持久化到磁盘）：\n\n变更类型具体内容持久性npm 本地安装cos-mcp、cos-nodejs-sdk-v5、mcporter 安装到项目 node_modules/持久（仅限项目目录）项目文件如无 package.json 则创建持久（仅限项目目录）环境变量TENCENT_COS_* export 到当前 session临时（关闭终端失效）\n\n✅ 默认模式不会写入 ~/.mcporter/mcporter.json 或 ~/.cos.conf，凭证不持久化到磁盘。\n\n--persist 模式（凭证会持久化到磁盘，需显式指定）：\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默认不会将凭证写入任何磁盘文件（需显式 --persist 才会写入）\n\n凭证写入的文件（⚠️ 仅 --persist 模式；默认模式不写入任何凭证文件）：\n\n文件内容权限~/.mcporter/mcporter.jsonMCP 服务器配置中的 env 字段含凭证600~/.cos.confcoscmd 配置（仅当 coscmd 已安装时）600\n\n如需完全清理凭证：rm -f ~/.mcporter/mcporter.json ~/.cos.conf\n如需持久化环境变量，用户可自行在 shell 配置中添加 export 语句。\n强烈建议：优先使用 STS 临时凭证（默认模式即可），避免凭证持久化到磁盘。\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_TOKEN（可选，STS 临时凭证的 SecurityToken）\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": "本技能支持两种凭证模式，默认不持久化凭证到磁盘：\n\n模式 A：默认模式 — ephemeral（推荐 ✅，安全默认行为）\n\n特性说明凭证来源STS 临时凭证（推荐）或永久子账号密钥存储方式仅存于当前 shell session 环境变量中磁盘写入不写入任何凭证文件（这是默认行为，无需额外标志）有效期STS 临时凭证自带有效期（默认 1800 秒），过期自动失效；永久密钥关闭终端后环境变量消失终端关闭后凭证自动消失可用执行方式方式二（Node.js SDK）、方式三（COSCMD）不可用执行方式方式一（mcporter，因需要配置文件）\n\n模式 B：--persist 模式（显式持久化 ⚠️，仅当需要方式一 mcporter 时使用）\n\n特性说明凭证来源子账号的 SecretId / SecretKey（必须使用子账号最小权限密钥）存储方式环境变量 + 持久化到配置文件磁盘写入~/.mcporter/mcporter.json（权限 600）、~/.cos.conf（权限 600，如 coscmd 已安装）有效期永久有效，需手动轮换/清理终端关闭后配置文件中的凭证仍存在可用执行方式全部三种方式风险明文凭证持久化在磁盘上，可能因磁盘窃取、备份泄露、恶意软件读取而暴露触发方式需显式指定 --persist 标志，不会意外触发"
      },
      {
        "title": "凭证持久化存储与暴露风险（仅 --persist 模式）",
        "body": "⚠️ 重要安全提示：只有显式使用 --persist 标志时，setup.sh 才会将 SecretId/SecretKey 持久化写入磁盘文件。默认行为不写入任何凭证文件。持久存储会增加凭证暴露风险（如磁盘被窃取、备份泄露、恶意软件读取等）。\n除非确实需要方式一（mcporter），否则不要使用 --persist。\n\n--persist 模式下凭证存储位置：\n\n文件写入场景存储内容权限风险~/.mcporter/mcporter.json始终写入cos-mcp 服务器配置的 env 字段含 SecretId/SecretKey600凭证明文存储在用户主目录~/.cos.conf仅当 coscmd 已预装时coscmd 配置含 SecretId/SecretKey600凭证明文存储在用户主目录\n\n降低风险的措施：\n\n不使用 --persist（默认行为即完全避免凭证持久化）\n优先使用 STS 临时凭证（凭证自带有效期，过期自动失效）\n使用最小权限子账号密钥（见下方详细指导），不要使用主账号密钥\n不再使用时及时清理凭证：rm -f ~/.mcporter/mcporter.json ~/.cos.conf\n定期轮换密钥：在 腾讯云控制台 > 访问管理 > API密钥管理 定期更换密钥"
      },
      {
        "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": "🔒 这是本技能推荐的凭证模式，默认行为即不持久化凭证到磁盘。\n\n使用腾讯云 STS 临时凭证：\n\n临时凭证有有效期（默认 1800 秒），过期自动失效\n默认模式下凭证不会写入任何磁盘文件\n适合自动化流水线、短期任务、安全要求较高的场景\ncos-mcp / Node.js SDK / coscmd 均支持通过环境变量传入 STS Token（设置 TENCENT_COS_TOKEN 环境变量）\n\n使用方式：\n\nexport TENCENT_COS_SECRET_ID=\"<TmpSecretId>\"\nexport TENCENT_COS_SECRET_KEY=\"<TmpSecretKey>\"\nexport TENCENT_COS_TOKEN=\"<SecurityToken>\"\nexport TENCENT_COS_REGION=\"<Region>\"\nexport TENCENT_COS_BUCKET=\"<Bucket>\"\n{baseDir}/scripts/setup.sh --from-env"
      },
      {
        "title": "通用安全原则",
        "body": "setup.sh 在处理凭证时遵循以下原则（两种模式通用）：\n\n不修改用户的 shell 配置文件：凭证不会写入 ~/.zshrc、~/.bashrc 或其他 shell RC 文件\n环境变量仅当前 session 有效：关闭终端后环境变量失效，需重新 export\n配置文件权限 600：所有写入的配置文件仅当前用户可读写（仅 --persist 模式）\n不执行全局安装：npm 包安装到项目本地 node_modules/，不使用 npm install -g\n不自动安装系统包：不执行 pip install 或其他系统级包安装"
      },
      {
        "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\n⚠️ 重要安全说明：本技能需要腾讯云云基础设施主凭证（SecretId/SecretKey）， 这些凭证可访问你的 COS 对象存储和数据万象 API。凭证泄露可能导致存储桶数据被窃取或篡改。\n\n默认安全行为：凭证仅存于当前终端会话的环境变量中，不会写入任何磁盘文件。 关闭终端后凭证自动消失。\n\n🔒 推荐方案：STS 临时凭证（有效期短，过期自动失效）\n\n如果你已有 STS 临时凭证，请提供：\n\nSecretId — 临时密钥 ID（STS 返回的 TmpSecretId）\nSecretKey — 临时密钥 Key（STS 返回的 TmpSecretKey）\nToken — 临时安全令牌（STS 返回的 SecurityToken）\nRegion — 存储桶区域（如 ap-guangzhou）\nBucket — 存储桶名称（格式 name-appid，如 mybucket-1250000000）\n\n获取方式：通过 腾讯云 STS 服务 获取临时凭证。\n\n⚠️ 降级方案：永久密钥\n\n如果无法使用 STS，可提供永久密钥：\n\nSecretId — 腾讯云 API 密钥 ID\nSecretKey — 腾讯云 API 密钥 Key\nRegion — 存储桶区域（如 ap-guangzhou）\nBucket — 存储桶名称（格式 name-appid，如 mybucket-1250000000）\n\n默认情况下永久密钥也不会持久化到磁盘。如果你需要使用方式一（mcporter）， 需显式加 --persist 标志，此时凭证才会写入 ~/.mcporter/mcporter.json（权限 600）。\n\n⚠️ 持久化凭证到磁盘的风险（仅 --persist 模式）：\n\n磁盘被窃取/备份泄露时凭证暴露\n恶意软件可能读取明文凭证\n凭证不会自动过期，需手动清理\n\n必须使用子账号密钥，仅授予 COS 相关权限（如 QcloudCOSDataFullControl），严禁使用主账号密钥。\n\n可选配置（两种方案均适用）\nDatasetName（可选） — 数据万象数据集名称（仅智能搜索需要）\nDomain（可选） — 自定义域名，用于替换默认的 COS 访问域名（如 cdn.example.com）\nServiceDomain（可选） — 自定义服务域名，用于自定义 COS API 请求域名\nProtocol（可选） — 协议，如 https 或 http\n\n你可以在 腾讯云控制台 > 访问管理 > API密钥管理 获取密钥， 在 COS 控制台 查看存储桶信息。\n\n步骤 3：用户提供凭证后，运行自动设置\nSTS 临时凭证模式（推荐 — 默认不持久化到磁盘）：\nexport TENCENT_COS_SECRET_ID=\"<TmpSecretId>\"\nexport TENCENT_COS_SECRET_KEY=\"<TmpSecretKey>\"\nexport TENCENT_COS_TOKEN=\"<SecurityToken>\"\nexport TENCENT_COS_REGION=\"<Region>\"\nexport TENCENT_COS_BUCKET=\"<Bucket>\"\n# 可选：\n# export TENCENT_COS_DATASET_NAME=\"<DatasetName>\"\n\n{baseDir}/scripts/setup.sh --from-env\n\n\n默认行为：\n\n✅ 凭证仅存在于当前 shell session 的环境变量中\n✅ 不写入 ~/.mcporter/mcporter.json 或任何磁盘文件\n✅ 关闭终端后凭证自动消失\n⚠️ 方式一（mcporter）需要配置文件，默认模式下不可用；如需使用请加 --persist\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显式持久化模式（仅当需要方式一 mcporter 时使用，需用户确认风险）：\n{baseDir}/scripts/setup.sh --from-env --persist\n\n\n⚠️ --persist 会将凭证以明文写入 ~/.mcporter/mcporter.json（权限 600）， 可能因磁盘窃取、备份泄露、恶意软件等方式暴露。仅在确实需要方式一时使用。\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默认模式：仅设置环境变量，不写入任何配置文件到磁盘\n--persist 模式：创建/更新 ~/.mcporter/mcporter.json，写入 cos-mcp 服务器配置（凭证通过 env 字段传递，权限 600）\n如 coscmd 已安装则配置 ~/.cos.conf（权限 600，仅 --persist 模式）；不会自动安装 coscmd\n验证 COS 连接\n系统变更摘要\n\n用户安装前应了解 setup.sh 会产生的所有变更：\n\n默认模式（推荐 — 凭证不持久化到磁盘）：\n\n变更类型\t具体内容\t持久性\nnpm 本地安装\tcos-mcp、cos-nodejs-sdk-v5、mcporter 安装到项目 node_modules/\t持久（仅限项目目录）\n项目文件\t如无 package.json 则创建\t持久（仅限项目目录）\n环境变量\tTENCENT_COS_* export 到当前 session\t临时（关闭终端失效）\n\n✅ 默认模式不会写入 ~/.mcporter/mcporter.json 或 ~/.cos.conf，凭证不持久化到磁盘。\n\n--persist 模式（凭证会持久化到磁盘，需显式指定）：\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默认不会将凭证写入任何磁盘文件（需显式 --persist 才会写入）\n\n凭证写入的文件（⚠️ 仅 --persist 模式；默认模式不写入任何凭证文件）：\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 语句。 强烈建议：优先使用 STS 临时凭证（默认模式即可），避免凭证持久化到磁盘。 如使用永久密钥，必须使用子账号最小权限密钥，详见「最小权限与子账号密钥」章节。\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_TOKEN（可选，STS 临时凭证的 SecurityToken）\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\n本技能支持两种凭证模式，默认不持久化凭证到磁盘：\n\n模式 A：默认模式 — ephemeral（推荐 ✅，安全默认行为）\n特性\t说明\n凭证来源\tSTS 临时凭证（推荐）或永久子账号密钥\n存储方式\t仅存于当前 shell session 环境变量中\n磁盘写入\t不写入任何凭证文件（这是默认行为，无需额外标志）\n有效期\tSTS 临时凭证自带有效期（默认 1800 秒），过期自动失效；永久密钥关闭终端后环境变量消失\n终端关闭后\t凭证自动消失\n可用执行方式\t方式二（Node.js SDK）、方式三（COSCMD）\n不可用执行方式\t方式一（mcporter，因需要配置文件）\n模式 B：--persist 模式（显式持久化 ⚠️，仅当需要方式一 mcporter 时使用）\n特性\t说明\n凭证来源\t子账号的 SecretId / SecretKey（必须使用子账号最小权限密钥）\n存储方式\t环境变量 + 持久化到配置文件\n磁盘写入\t~/.mcporter/mcporter.json（权限 600）、~/.cos.conf（权限 600，如 coscmd 已安装）\n有效期\t永久有效，需手动轮换/清理\n终端关闭后\t配置文件中的凭证仍存在\n可用执行方式\t全部三种方式\n风险\t明文凭证持久化在磁盘上，可能因磁盘窃取、备份泄露、恶意软件读取而暴露\n触发方式\t需显式指定 --persist 标志，不会意外触发\n凭证持久化存储与暴露风险（仅 --persist 模式）\n\n⚠️ 重要安全提示：只有显式使用 --persist 标志时，setup.sh 才会将 SecretId/SecretKey 持久化写入磁盘文件。默认行为不写入任何凭证文件。持久存储会增加凭证暴露风险（如磁盘被窃取、备份泄露、恶意软件读取等）。\n\n除非确实需要方式一（mcporter），否则不要使用 --persist。\n\n--persist 模式下凭证存储位置：\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不使用 --persist（默认行为即完全避免凭证持久化）\n优先使用 STS 临时凭证（凭证自带有效期，过期自动失效）\n使用最小权限子账号密钥（见下方详细指导），不要使用主账号密钥\n不再使用时及时清理凭证：rm -f ~/.mcporter/mcporter.json ~/.cos.conf\n定期轮换密钥：在 腾讯云控制台 > 访问管理 > API密钥管理 定期更换密钥\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🔒 这是本技能推荐的凭证模式，默认行为即不持久化凭证到磁盘。\n\n使用腾讯云 STS 临时凭证：\n\n临时凭证有有效期（默认 1800 秒），过期自动失效\n默认模式下凭证不会写入任何磁盘文件\n适合自动化流水线、短期任务、安全要求较高的场景\ncos-mcp / Node.js SDK / coscmd 均支持通过环境变量传入 STS Token（设置 TENCENT_COS_TOKEN 环境变量）\n\n使用方式：\n\nexport TENCENT_COS_SECRET_ID=\"<TmpSecretId>\"\nexport TENCENT_COS_SECRET_KEY=\"<TmpSecretKey>\"\nexport TENCENT_COS_TOKEN=\"<SecurityToken>\"\nexport TENCENT_COS_REGION=\"<Region>\"\nexport TENCENT_COS_BUCKET=\"<Bucket>\"\n{baseDir}/scripts/setup.sh --from-env\n\n通用安全原则\n\nsetup.sh 在处理凭证时遵循以下原则（两种模式通用）：\n\n不修改用户的 shell 配置文件：凭证不会写入 ~/.zshrc、~/.bashrc 或其他 shell RC 文件\n环境变量仅当前 session 有效：关闭终端后环境变量失效，需重新 export\n配置文件权限 600：所有写入的配置文件仅当前用户可读写（仅 --persist 模式）\n不执行全局安装：npm 包安装到项目本地 node_modules/，不使用 npm install -g\n不自动安装系统包：不执行 pip install 或其他系统级包安装\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-skills",
    "publisherUrl": "https://clawhub.ai/ShawnMinh/tencentcloud-cos-skills",
    "owner": "ShawnMinh",
    "version": "1.0.10",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skills",
    "downloadUrl": "https://openagent3.xyz/downloads/tencentcloud-cos-skills",
    "agentUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skills/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skills/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tencentcloud-cos-skills/agent.md"
  }
}