L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Déploiement et opérations · SKILL.md

upload-cdn

upload-cdn

上传本地文件到 S3 兼容对象存储(Cloudflare R2 等),返回公开访问 URL。当用户要上传图片/文件到 CDN、获取外链时使用。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: upload-cdn version: 1.0.0 trigger: "上传CDN|上传图床|upload cdn|上传到CDN|上传文件到云|获取外链|公开链接|图片外链" description: "上传本地文件到 S3 兼容对象存储(Cloudflare R2 等),返回公开访问 URL。当用户要上传图片/文件到 CDN、获取外链时使用。"

upload-cdn

上传本地文件到 S3 兼容对象存储,返回公开 URL。支持 Cloudflare R2 及任意 S3 兼容服务。

密钥配置

凭证存放在 ~/.ethan/.secrets/upload-cdn.env,由 shell 工具自动注入,不要在对话中回显明文值。

第 0 步:先用 list_secrets 检查凭证是否已存。

  • 若输出包含 upload-cdn.env → 已配置,直接跳到「使用方法」。
  • 若没有 → 立即停止,不要再 find / read config 探索——凭证就是没有。直接告知用户需要提供以下字段(不要绕圈子):

第 1 步(凭证不存在时):检测 shell 注入是否生效(可选快速确认):

test -n "$CDN_ENDPOINT" && test -n "$CDN_ACCESS_KEY" && test -n "$CDN_SECRET_KEY" \
  && test -n "$CDN_BUCKET" && test -n "$CDN_PUBLIC_URL" && echo READY || echo MISSING
  • READY → 继续。
  • MISSING → 凭证缺失。直接向用户索要以下字段,不要再探索其他路径:
字段说明示例
CDN_ENDPOINTS3 endpoint URLhttps://<account_id>.r2.cloudflarestorage.com
CDN_ACCESS_KEYAccess Key IDR2 → 管理 API 令牌 → 创建令牌
CDN_SECRET_KEYSecret Access Key同上
CDN_BUCKET存储桶名my-assets
CDN_PUBLIC_URL公开访问 URL 前缀https://cdn.example.com 或 R2 公开域名
CDN_REGION区域(可选)R2 填 auto,其他填对应 region(默认 auto)

拿到后由 agent 写入(file_write 工具,path=~/.ethan/.secrets/upload-cdn.env):

CDN_ENDPOINT="https://<account_id>.r2.cloudflarestorage.com"
CDN_ACCESS_KEY="<access_key_id>"
CDN_SECRET_KEY="<secret_access_key>"
CDN_BUCKET="<bucket_name>"
CDN_PUBLIC_URL="https://cdn.example.com"
CDN_REGION="auto"

写完执行 chmod 600 ~/.ethan/.secrets/upload-cdn.env,然后重新执行原始请求。

使用方法

规则:所有上传统一使用 ethan/upload/ 路径前缀,不要用裸文件名作为 key。

上传图片/文件:

python ~/.ethan/skills/upload-cdn/scripts/upload_cdn.py /path/to/file.png "ethan/upload/$(basename /path/to/file.png)"

批量上传(shell 循环):

for f in /tmp/imgs/*.png; do
  python ~/.ethan/skills/upload-cdn/scripts/upload_cdn.py "$f" "docs/$(basename "$f")"
done

成功时 stdout 输出公开 URL,失败时 stderr 输出错误并 exit 非0。

注意事项

  • Object key 建议带路径前缀(如 docs/2024/image.png),避免与其他文件冲突
  • 同名 key 会覆盖已有文件
  • 脚本纯标准库实现,无需额外依赖
Skills enregistrées