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

CC0-1.0Auto-check: notesMedia & Creative

Install Cloud Uploader

skills CLI
$ npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install bitwize-music-studio/claude-ai-music-skills cloud-uploader --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/bitwize-music-studio/claude-ai-music-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cloud-uploader .claude/skills/cloud-uploader && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cloud-uploader
GitHub stars
540
Token cost
~2.1k tokens
SKILL.md length
625 words
Files
1
Skills in repo
51
Repo updated
First seen
Licence
CC0-1.0

At a glance

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

  • Works in 6 steps: Verify Prerequisites → Get Python Command → Preview Upload (Dry Run) → …
  • The user wants to host promo content for social media
  • SKILL.md covers Purpose, When to Use, Position in Workflow and Prerequisites, plus 12 more sections
  • Calls pip and aws

What it does

Cloud Uploader is an agent skill from bitwize-music-studio/claude-ai-music-skills. 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.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Video production. It works with Amazon S3, Cloudflare R2 and Python. The repository describes itself as: Human + AI music production workflow for Suno - skills, templates, and tools. The licence is CC0-1.0.

When your agent uses it

  • The user wants to host promo content for social media
  • Tasks that involve Video production

Example prompts

  • “Use the cloud-uploader skill to upload promo videos and content to Cloudflare R2 or AWS S3”
  • “/cloud-uploader”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Read, Bash, Glob

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Verify Prerequisites
  2. Get Python Command
  3. Preview Upload (Dry Run)
  4. Upload Files
  5. Verify Upload
  6. Report Results

What it can do on your machine

Read from SKILL.md and the folder at commit 58f32c2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Bash
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip
    • aws

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip and aws, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Cloud Uploader loads about 2.1k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 625 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~39
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Bash, Glob

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from bitwize-music-studio/claude-ai-music-skills at commit 58f32c2, republished under its CC0-1.0 licence (© bitwize-music-studio). 625 words, ~2,134 tokens.

Download SKILL.mdSave it as .claude/skills/cloud-uploader/SKILL.md (or your agent's skills folder).
name
cloud-uploader
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.
allowed-tools
Read, Bash, Glob
model
sonnet
effort
low
prerequisites
promo-director
requirements.python
boto3

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:"

Verify:

  • cloud.enabled: true
  • Provider credentials configured (r2 or s3)
  • Bucket name set

Check promo videos exist:

bash
ls {audio_root}/artists/{artist}/albums/{genre}/{album}/promo_videos/
ls {audio_root}/artists/{artist}/albums/{genre}/{album}/album_sampler.mp4

If missing:

Error: Promo videos not found.

Generate with: /bitwize-music:promo-director {album}
2. Get Python Command

Call get_python_command() first to get the venv Python path and plugin root. Use these for all bash invocations below.

PYTHON="{python from get_python_command}"
PLUGIN_DIR="{plugin_root from get_python_command}"
3. Preview Upload (Dry Run)

Preview first:

bash
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --dry-run

Output shows:

  • Provider and bucket
  • Files to upload
  • S3 keys (paths in bucket)
  • File sizes
4. Upload Files

Upload all (promos + sampler):

bash
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album}

Upload only track promos:

bash
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --type promos

Upload only album sampler:

bash
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --type sampler

Upload with public access:

bash
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --public
5. Verify Upload

For R2:

  • Check Cloudflare dashboard → R2 → Your bucket
  • Files should appear under {artist}/{album}/

For S3:

  • Check AWS Console → S3 → Your bucket
  • Or use AWS CLI: aws s3 ls s3://{bucket}/{artist}/{album}/
5. Report Results
## Cloud Upload Complete

**Provider:** R2 (or S3)
**Bucket:** {bucket}
**Album:** {album}

**Uploaded Files:**
- {artist}/{album}/promos/01-track_promo.mp4
- {artist}/{album}/promos/02-track_promo.mp4
- ...
- {artist}/{album}/promos/album_sampler.mp4

**Total:** 11 files, 125.4 MB

**Next Steps:**
1. Verify files in cloud dashboard
2. If public: Test URLs work
3. Continue to release: /bitwize-music:release-director {album}

Upload Path Structure

IMPORTANT: Cloud paths are FLAT - no genre folder.

The cloud path structure is different from the local content structure:

LocationPath Structure
Local content{content_root}/artists/{artist}/albums/{genre}/{album}/
Local audio{audio_root}/artists/{artist}/albums/{genre}/{album}/
Cloud{artist}/{album}/ (no genre!)

Files are organized in the bucket as:

{bucket}/
└── {artist}/
    └── {album}/
        └── promos/
            ├── 01-track_promo.mp4
            ├── 02-track_promo.mp4
            ├── ...
            └── album_sampler.mp4

Example for album "my-album" by "bitwize" in rock genre:

  • Local: ~/music/artists/bitwize/albums/rock/my-album/
  • Cloud: bitwize/my-album/promos/ (NOT bitwize/albums/rock/my-album/)

Command Options

OptionDescription
--type promosUpload only track promo videos
--type samplerUpload only album sampler
--type allUpload both (default)
--dry-runPreview without uploading
--publicSet files as public-read
--audio-root PATHOverride audio_root from config

Invocation Examples

Basic upload:

/bitwize-music:cloud-uploader my-album

Preview only:

/bitwize-music:cloud-uploader my-album --dry-run

Upload promos only:

/bitwize-music:cloud-uploader my-album --type promos

Upload with public access:

/bitwize-music:cloud-uploader my-album --public
Show full SKILL.md (262 more words)Show less

Error Handling

"Cloud uploads not enabled"

  • Add cloud.enabled: true to config
  • See ${CLAUDE_PLUGIN_ROOT}/reference/cloud/setup-guide.md

"Credentials not configured"

  • Add credentials to config file
  • For R2: account_id, access_key_id, secret_access_key
  • For S3: access_key_id, secret_access_key

"Album not found"

  • Check album exists in {audio_root}/artists/{artist}/albums/{genre}/{album}/
  • Verify artist name in config matches

"No files found to upload"

  • Generate promo videos first: /bitwize-music:promo-director {album}

"Access Denied"

  • Check credentials are correct
  • For R2: Verify API token has write permissions
  • For S3: Verify IAM policy allows s3:PutObject

"Bucket not found"

  • Create bucket first in cloud dashboard
  • Verify bucket name in config

Security Notes

  • Credentials stored in config file (ensure proper file permissions)
  • Config file should be gitignored in user's content repo
  • Default: Files uploaded as private (not public)
  • Use --public flag only for files intended for public access
  • Consider using environment variables for CI/CD (future enhancement)

Integration with Other Skills

Handoff FROM

promo-director:

After promo generation:

Promo videos generated successfully.

**Optional:** Upload to cloud storage: /bitwize-music:cloud-uploader {album}
Handoff TO

release-director:

After cloud upload:

Cloud upload complete.

Ready for release workflow: /bitwize-music:release-director {album}

Supported Providers

Cloudflare R2
  • S3-compatible API
  • No egress fees
  • Global CDN integration
  • Good for high-traffic content
AWS S3
  • Industry standard
  • Fine-grained IAM permissions
  • CloudFront CDN available
  • Good for AWS ecosystem integration

Future Enhancements

  • Environment variable credentials (for CI/CD)
  • Multiple bucket support
  • Automatic CDN invalidation
  • Progress bar for large uploads
  • Resume failed uploads
  • Bucket creation if missing
  • Additional providers (Backblaze B2, DigitalOcean Spaces)
  • ${CLAUDE_PLUGIN_ROOT}/reference/cloud/setup-guide.md - Detailed setup instructions
  • ${CLAUDE_PLUGIN_ROOT}/skills/promo-director/SKILL.md - Generate promo videos
  • ${CLAUDE_PLUGIN_ROOT}/skills/release-director/SKILL.md - Release workflow

Model Recommendation

Sonnet 4.5 - This skill runs scripts and coordinates workflow. No creative output from LLM.

Version History

  • v0.14.0 - Initial implementation
    • R2 and S3 support via boto3
    • Dry-run mode
    • Public/private upload options
    • Path organization by artist/album

© bitwize-music-studio, CC0-1.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/cloud-uploader of bitwize-music-studio/claude-ai-music-skills.

Open the folder on GitHubat commit 58f32c2

Compare with similar skills

Cloud Uploader next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cloud Uploader compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cloud Uploader this skillbitwize-music-studio/claude-ai-music-skills540—~2.1kAutomated safety check: NotesCC0-1.0
Vox DirectorAlisa0808/vox-director2.2k—~5.6kAutomated safety check: PassMIT
Cap Cinematic Demo GeneratorCapSoftware/Cap23k—~2.4kAutomated safety check: PassCustom licence
VideoDB Video Search and Editingaffaan-m/ECC276k3 repos~3.5kAutomated safety check: NotesMIT
Ffmpeg Skillkajisho5/ffmpeg-skill1.9k—~7.4kAutomated safety check: PassMIT
OpenStoryline Install HelperFireRedTeam/FireRed-OpenStoryline3.5k—~1.5kAutomated safety check: NotesApache-2.0

Similar skills

  • Vox Director

    Alisa0808/vox-director

    Turn ONE topic into a finished Vox-style paper-collage explainer / ad video, end to end on the Atlas Cloud API + local ffmpeg — script, collage keyframes, motion, voice-over, music, captions, all…

    2.2k GitHub stars~5.6k tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • Turns any URL into a short cinematic product-demo video on macOS, scouting the page, recording it with virtual input, then treating the clip with Cap's 3D camera and music.

    23k GitHub stars~2.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Ingests, indexes, searches, edits and monitors video, audio and live streams through the VideoDB Python SDK, returning stream links, clips and timestamps.

    276k GitHub starsUsed in 3 repos~3.5k tokens
    Media & CreativeAuto-check: notes
  • Ffmpeg Skill

    kajisho5/ffmpeg-skill

    Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles (SRT/ASS, animated, karaoke), logos and text…

    1.9k GitHub stars~7.4k tokensUpdated 4 days ago
    Media & CreativeAuto-check passed
  • OpenStoryline Install Helper

    FireRedTeam/FireRed-OpenStoryline

    Installs, repairs and starts a local source checkout of FireRed-OpenStoryline, from prerequisites and a venv to resources, config and the MCP and web servers.

    3.5k GitHub stars~1.5k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes
  • Cassette Video Edit

    Cassette-Editor/oh-my-cassette

    Edit, trim, cut, caption, subtitle, reframe, combine, add background music to, or export video, audio, and image files through Cassette.

    158 GitHub starsUsed in 1 repo~3.4k tokens
    Media & CreativeAuto-check passed

More from bitwize-music-studio/claude-ai-music-skills

All 51 skills in this repo
  • Album Conceptualizer

    bitwize-music-studio/claude-ai-music-skills

    Designs album concepts, tracklist architecture, and thematic planning through 7 structured phases.

    540 GitHub stars~3.6k tokensUpdated yesterday
    Auto-check passed
  • Album Dashboard

    bitwize-music-studio/claude-ai-music-skills

    Shows a structured progress dashboard for an album with percentage complete per phase, blocking items, and status breakdown.

    540 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Album Ideas

    bitwize-music-studio/claude-ai-music-skills

    Tracks and manages album ideas including brainstorming, planning, and status updates.

    540 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Clipboard

    bitwize-music-studio/claude-ai-music-skills

    Copies track content (lyrics, style prompts, streaming lyrics) to the system clipboard.

    540 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check: notes
  • Configure

    bitwize-music-studio/claude-ai-music-skills

    Sets up or edits the plugin configuration file interactively.

    540 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Document Hunter

    bitwize-music-studio/claude-ai-music-skills

    Searches and retrieves documents from free public sources using automated browser navigation.

    540 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check: notes

Questions about Cloud Uploader

What does Cloud Uploader do?

Uploads promo videos and content to Cloudflare R2 or AWS S3. Cloud Uploader is an agent skill from bitwize-music-studio/claude-ai-music-skills. Uploads promo videos and content to Cloudflare R2 or AWS S3.

When should I use Cloud Uploader?

Cloud Uploader fits situations like: the user wants to host promo content for social media; tasks that involve Video production.

How do I install Cloud Uploader in Claude Code?

Run `npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a claude-code`. Or copy the skill folder (skills/cloud-uploader in bitwize-music-studio/claude-ai-music-skills) into .claude/skills/cloud-uploader in your project. Claude Code loads it when a task matches its description.

How do I install Cloud Uploader in Codex?

Run `npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a codex`. Or copy the skill folder (skills/cloud-uploader in bitwize-music-studio/claude-ai-music-skills) into .agents/skills/cloud-uploader in your project. Codex loads it when a task matches its description.

Can I use Cloud Uploader in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cloud-uploader, .gemini/skills/cloud-uploader, .github/skills/cloud-uploader and .opencode/skills/cloud-uploader in your project.

What does Cloud Uploader need to run?

Going by SKILL.md and its folder, Cloud Uploader needs the command-line tools its instructions call (pip and aws). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Bash, Glob.

Does Cloud Uploader access the network?

SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Cloud Uploader safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Cloud Uploader use?

Cloud Uploader is published under the CC0-1.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cloud Uploader use?

About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Cloud Uploader?

Skills that share tags, products or a category with Cloud Uploader: Vox Director (Alisa0808/vox-director, 2.2k stars), Cap Cinematic Demo Generator (CapSoftware/Cap, 23k stars), VideoDB Video Search and Editing (affaan-m/ECC, 276k stars) and Ffmpeg Skill (kajisho5/ffmpeg-skill, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cloud Uploader?

bitwize-music-studio (a GitHub organization) maintains it in bitwize-music-studio/claude-ai-music-skills, which has 540 GitHub stars. The repository holds 51 skills in this directory. The repository was last updated on October 7, 2026.

Source: bitwize-music-studio/claude-ai-music-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.