スキル一覧に戻る

cloud-uploader

bitwize-music-studio
更新日 2 days ago
2 閲覧
209
37
209
GitHubで表示
その他general

について

このスキルは、生成されたプロモーション動画をCloudflare R2またはAWS S3ストレージにアップロードし、ホスティングと配信を行います。プロモーションディレクタースキルの後に手動で使用され、ウェブサイト、直接リンク、またはCDN配信でコンテンツを利用可能にします。このスキルにはPythonのboto3ライブラリが必要で、動画作成と公開の間のワークフローに統合されます。

クイックインストール

Claude Code

推奨
メイン
npx skills add bitwize-music-studio/claude-ai-music-skills -a claude-code
プラグインコマンド代替
/plugin add https://github.com/bitwize-music-studio/claude-ai-music-skills
Git クローン代替
git clone https://github.com/bitwize-music-studio/claude-ai-music-skills.git ~/.claude/skills/cloud-uploader

このコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします

ドキュメント

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

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

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

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)

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

GitHub リポジトリ

bitwize-music-studio/claude-ai-music-skills
パス: skills/cloud-uploader
0
ai-musicai-music-toolsaudio-masteringclaudeclaude-codeclaude-code-plugin

関連スキル

llamaguard

その他

LlamaGuardは、暴力やヘイトスピーチなど6つの安全性カテゴリーにおいて、LLMの入力と出力をモデレートするMetaの70-80億パラメータモデルです。94〜95%の精度を提供し、vLLM、Hugging Face、Amazon SageMakerを使用してデプロイ可能です。このスキルを使用して、AIアプリケーションにコンテンツフィルタリングと安全策を簡単に統合できます。

スキルを見る

cost-optimization

その他

このClaudeスキルは、リソースの適正サイジング、タグ付け戦略、支出分析を通じて、開発者がクラウドコストを最適化することを支援します。AWS、Azure、GCPにわたるクラウド支出の削減とコストガバナンスの実施のためのフレームワークを提供します。インフラコストの分析、リソースの適正サイジング、または予算制約への対応が必要な際にご利用ください。

スキルを見る

quantizing-models-bitsandbytes

その他

このスキルは、bitsandbytesを使用してLLMを8ビットまたは4ビット精度に量子化し、精度の低下を最小限に抑えつつ50〜75%のメモリ削減を実現します。限られたGPUメモリでより大規模なモデルを実行したり、推論を高速化するのに理想的で、INT8、NF4、FP4などのフォーマットをサポートしています。HuggingFace Transformersと統合され、QLoRAトレーニングや8ビットオプティマイザーを可能にします。

スキルを見る

dispatching-parallel-agents

その他

このClaudeスキルは、複数のエージェントを配備し、3つ以上の独立した問題を並行して調査・修正します。共有状態や依存関係がなく解決可能な、無関係な障害が発生するシナリオ向けに設計されています。中核となる機能は並列問題解決であり、効率を最大化するために独立した問題領域ごとに1つのエージェントを割り当てます。

スキルを見る