# Cloud Uploader

Uploads promo videos and content to Cloudflare R2 or AWS S3.

- Repository: https://github.com/bitwize-music-studio/claude-ai-music-skills (615 stars)
- Category: DevOps
- License: CC0-1.0
- Last updated: 2026-10-28
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -g -a claude-code -y`
Codex: `npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -g -a codex -y`
Cursor: `npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -g -a cursor -y`
Gemini CLI: `npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add bitwize-music-studio/claude-ai-music-skills`

## Description

Uploads promo videos and content to Cloudflare R2 or AWS S3. Use when the user wants to host promo content for social media or distribution.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Cloud Uploader Skill

Upload promo videos and other album content to cloud storage (Cloudflare R2 or AWS S3).

## Purpose

After generating promo videos with `/bitwize-music:promo-director`, upload them to cloud storage for:
- Hosting on websites
- Sharing via direct links
- CDN distribution
- Backup and archival

## When to Use

- After promo videos generated, user wants to upload to cloud
- User says "upload promos to R2" or "upload to S3"
- User says "upload promo videos for [album]"
- Manual invocation only (not automatic)

## Position in Workflow

```
Generate → Master → Promo Videos → **[Cloud Upload]** → Release
```

Optional step after promo-director, before release-director.

## Prerequisites

### Cloud Configuration

Cloud credentials must be configured in `~/.bitwize-music/config.yaml`:

```yaml
cloud:
  enabled: true
  provider: "r2"  # or "s3"

  # For Cloudflare R2
  r2:
    account_id: "your-account-id"
    access_key_id: "your-access-key"
    secret_access_key: "your-secret-key"
    bucket: "promo-videos"

  # For AWS S3
  s3:
    region: "us-west-2"
    access_key_id: "your-access-key"
    secret_access_key: "your-secret-key"
    bucket: "promo-videos"
```

See `${CLAUDE_PLUGIN_ROOT}/reference/cloud/setup-guide.md` for detailed setup instructions.

### Required Files

- Promo videos generated (run `/bitwize-music:promo-director` first)
- Located at: `{audio_root}/artists/{artist}/albums/{genre}/{album}/promo_videos/`
- Album sampler at: `{audio_root}/artists/{artist}/albums/{genre}/{album}/album_sampler.mp4`

### Python Dependencies

```bash
# If using the shared venv (recommended)
~/.bitwize-music/venv/bin/pip install -r ${CLAUDE_PLUGIN_ROOT}/requirements.txt

# Or install separately
pip install boto3
```

The upload script uses `~/.bitwize-music/venv` if available, otherwise falls back to system Python.

## Workflow

### 1. Verify Prerequisites

**Check config:**
```bash
cat ~/.bitwize-music/config.yaml | grep -A 20 "cloud:"
```

The rest: https://github.com/bitwize-music-studio/claude-ai-music-skills/blob/HEAD/skills/cloud-uploader/SKILL.md
