Install
openclaw skills install r2-uploadUpload files to Cloudflare R2, AWS S3, or any S3-compatible storage and generate secure presigned download links with configurable expiration.
openclaw skills install r2-uploadUpload files to Cloudflare R2 or any S3-compatible storage and generate presigned download links.
Create ~/.r2-upload.yml (or set R2_UPLOAD_CONFIG env var):
# Default bucket (used when no bucket specified)
default: my-bucket
# Bucket configurations
buckets:
my-bucket:
endpoint: https://abc123.r2.cloudflarestorage.com
access_key_id: your_access_key
secret_access_key: your_secret_key
bucket_name: my-bucket
public_url: https://files.example.com # Optional: custom domain
region: auto # For R2, use "auto"
# Additional buckets
personal:
endpoint: https://xyz789.r2.cloudflarestorage.com
access_key_id: ...
secret_access_key: ...
bucket_name: personal-files
region: auto
https://dash.cloudflare.com/<ACCOUNT_ID>/r2/api-tokenshttps://<account_id>.r2.cloudflarestorage.comregion: autoaws-bucket:
endpoint: https://s3.us-east-1.amazonaws.com
access_key_id: ...
secret_access_key: ...
bucket_name: my-aws-bucket
region: us-east-1
r2-upload /path/to/file.pdf
# Returns: https://files.example.com/abc123/file.pdf?signature=...
r2-upload /path/to/file.pdf --key uploads/2026/file.pdf
r2-upload /path/to/file.pdf --bucket personal
r2-upload /path/to/file.pdf --expires 24h
r2-upload /path/to/file.pdf --expires 1d
r2-upload /path/to/file.pdf --expires 300 # seconds
r2-upload /path/to/file.pdf --public
r2_upload - Upload file and get presigned URLr2_list - List recent uploadsr2_delete - Delete a fileR2_UPLOAD_CONFIG - Path to config file (default: ~/.r2-upload.yml)R2_DEFAULT_BUCKET - Override default bucketR2_DEFAULT_EXPIRES - Default expiration in seconds (default: 300 = 5 minutes)--key is specifiedabc123/file.pdf)