
cloud-uploader
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.
- Installs
- 218
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads cloud-uploader automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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:
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-directorfirst) - 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
# 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:
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:
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:
$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):
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album}
Upload only track promos:
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --type promos
Upload only album sampler:
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --type sampler
Upload with public access:
$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:
| Location | Path 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/(NOTbitwize/albums/rock/my-album/)
Command Options
| Option | Description |
|---|---|
--type promos | Upload only track promo videos |
--type sampler | Upload only album sampler |
--type all | Upload both (default) |
--dry-run | Preview without uploading |
--public | Set files as public-read |
--audio-root PATH | Override 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
Error Handling
"Cloud uploads not enabled"
- Add
cloud.enabled: trueto 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
--publicflag 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)
Related Documentation
${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
FAQ
What does the cloud-uploader skill do?
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.
How do I install cloud-uploader?
Run npx skills add https://github.com/bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/cloud-uploader/ (personal) or .claude/skills/cloud-uploader/ (project).
Which AI agents can use cloud-uploader?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is cloud-uploader safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains cloud-uploader?
It is published by bitwize-music-studio in bitwize-music-studio/claude-ai-music-skills. It has 218 recorded installs.
More from bitwize-music-studio/claude-ai-music-skills
lyric-writer
bitwize-music-studio/claude-ai-music-skills
Writes or reviews lyrics with professional prosody, rhyme craft, and quality checks. Use when writing new lyrics, revising existing lyrics, or when the user says 'let's work on a track.'
suno-engineer
bitwize-music-studio/claude-ai-music-skills
Open the skill to read its SKILL.md instructions.
plagiarism-checker
bitwize-music-studio/claude-ai-music-skills
Open the skill to read its SKILL.md instructions.
mastering-engineer
bitwize-music-studio/claude-ai-music-skills
Guides audio mastering for streaming platforms including loudness optimization and tonal balance. Use when the user has approved tracks and wants to master audio files.
mix-engineer
bitwize-music-studio/claude-ai-music-skills
Open the skill to read its SKILL.md instructions.
lyric-reviewer
bitwize-music-studio/claude-ai-music-skills
Open the skill to read its SKILL.md instructions.
Popular devops & cloud skills
microsoft-foundry
microsoft/azure-skills
Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, azd provision/deploy, hosted agent scaffold/develop/run/deploy/troubleshoot, prompt agent create, managed harness agent create, GitHub Copilot harness agent, create agent, update agent, add tool to agent, invoke agent, agent insights, evaluate agent, batch eval, continuous eval, continuous monitoring, agent CI/CD, optimize prompt, improve prompt, optimize agent instructions, Agent Optimizer scaffold, dataset curation from traces, deploy model, model fine-tuning (SFT/DPO/RFT), Foundry project, RBAC, role assignment, permissions, quota, capacity, region, deployment failure, AI Services, create Foundry resource, knowledge index, customize deployment, onboard, availability, training-data, grader, distillation, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure
azure-diagnostics
microsoft/azure-skills
Debug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, container app 503 or target port mismatch, troubleshoot functions, function telemetry missing or stopped after a config/connection-string change, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, analyze logs, KQL, insights, image pull failures, cold start issues, health probe failures, resource health, root cause of errors, troubleshoot event hubs, troubleshoot service bus, messaging SDK error, AMQP connection failure, message lock lost, lock renewal during long-running processing, service bus dead letter.
azure-prepare
microsoft/azure-skills
Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azd infrastructure, modernize app for Azure with azd, deploy with azd, function app, timer trigger, service bus trigger, event-driven function, managed identity, generate Bicep, generate Terraform, create and deploy to Azure.
azure-ai
microsoft/azure-skills
Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.
azure-deploy
microsoft/azure-skills
Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: "run azd up", "run azd deploy", "execute deployment", "push to production", "push to cloud", "go live", "ship it", "bicep deploy", "terraform apply", "publish to Azure", "launch on Azure". DO NOT USE WHEN: "create and deploy", "build and deploy", "create a new app", "set up infrastructure", "create and deploy to Azure using Terraform" — use azure-prepare for these.
azure-validate
microsoft/azure-skills
Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight checks, verify configuration, check if ready to deploy, validate azure.yaml, validate Bicep, test before deploying, troubleshoot deployment errors, validate Azure Functions, validate function app, validate serverless deployment, verify RBAC roles, check role assignments, review managed identity permissions, what-if analysis, validate Container Apps deployment.