mcpField
C
cloud-uploader

cloud-uploader

github.com/bitwize-music-studioクラウド・DevOps603218 回インストール2 週間前に更新
リポジトリ

cloud-uploader について

アルバムのプロモーション動画やサンプラーを Cloudflare R2 または AWS S3 にアップロードするスキルです。転送内容を事前確認でき、動画、サンプラー、または両方を選べるリリース前の任意工程です。

主な機能

  1. 01Cloudflare R2 または AWS S3 へのアップロード
  2. 02dry-run によるファイルの事前確認
  3. 03プロモ動画、サンプラー、両方の選択
  4. 04アップロードファイルの公開設定
  5. 05アーティストとアルバム別のクラウドパス整理

活用シーン

  1. 01生成済みプロモ動画のホスティング
  2. 02アルバムサンプラーの直接リンク共有
  3. 03アルバムのプロモーション素材のクラウド保存

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader

インストール後、Claude Code で/cloud-uploaderを入力して読み込まれたか確認します。

詳細

Cloud Uploader Skill

プロモーション動画やその他のアルバムコンテンツをクラウドストレージ(Cloudflare R2 または AWS S3)にアップロードします。

目的

/bitwize-music:promo-director でプロモーション動画を生成した後、次の用途でクラウドストレージにアップロードします。

  • ウェブサイトでのホスティング
  • 直接リンクでの共有
  • CDN 配信
  • バックアップとアーカイブ

使用するタイミング

  • プロモーション動画の生成後、ユーザーがクラウドへのアップロードを希望した場合
  • ユーザーが「プロモーション動画を R2 にアップロード」または「S3 にアップロード」と言った場合
  • ユーザーが「[album] のプロモーション動画をアップロード」と言った場合
  • 手動でのみ実行します(自動実行はされません)

ワークフロー内での位置

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

promo-director の後、release-director の前に実行する任意のステップです。

前提条件

クラウド設定

クラウドの認証情報を ~/.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"

詳しい設定手順については、${CLAUDE_PLUGIN_ROOT}/reference/cloud/setup-guide.md を参照してください。

必要なファイル
  • プロモーション動画が生成済みであること(先に /bitwize-music:promo-director を実行してください)
  • 保存先:{audio_root}/artists/{artist}/albums/{genre}/{album}/promo_videos/
  • アルバムサンプラーの保存先:{audio_root}/artists/{artist}/albums/{genre}/{album}/album_sampler.mp4
Python の依存関係
# If using the shared venv (recommended)
~/.bitwize-music/venv/bin/pip install -r ${CLAUDE_PLUGIN_ROOT}/requirements.txt

# Or install separately
pip install boto3

アップロードスクリプトは、利用可能な場合は ~/.bitwize-music/venv を使用し、それ以外の場合はシステムの Python を使用します。

ワークフロー

1. 前提条件の確認

設定を確認します:

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

次の項目を確認してください。

  • cloud.enabled: true
  • プロバイダーの認証情報が設定されていること(r2 または s3)
  • バケット名が設定されていること

プロモーション動画があることを確認します:

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

ない場合:

Error: Promo videos not found.

Generate with: /bitwize-music:promo-director {album}
2. Python コマンドの取得

最初に get_python_command() を呼び出し、venv の Python パスとプラグインルートを取得します。以下のすべての bash 呼び出しでこれらを使用してください。

PYTHON="{python from get_python_command}"
PLUGIN_DIR="{plugin_root from get_python_command}"
3. アップロードのプレビュー(ドライラン)

最初にプレビューします。

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

出力には次の情報が表示されます。

  • プロバイダーとバケット
  • アップロードするファイル
  • S3 キー(バケット内のパス)
  • ファイルサイズ
4. ファイルのアップロード

すべてアップロード(プロモーション動画とサンプラー):

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

トラックのプロモーション動画のみアップロード:

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

アルバムサンプラーのみアップロード:

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

パブリックアクセスを有効にしてアップロード:

$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --public
5. アップロードの確認

R2 の場合:

  • Cloudflare ダッシュボード → R2 → お使いのバケットを確認します
  • ファイルは {artist}/{album}/ の下に表示されます

S3 の場合:

  • AWS Console → S3 → お使いのバケットを確認します
  • または AWS CLI を使用します:aws s3 ls s3://{bucket}/{artist}/{album}/
5. 結果の報告
## 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}

アップロードパスの構造

重要:クラウドのパスはフラットで、ジャンルフォルダーはありません。

クラウドのパス構造はローカルのコンテンツ構造とは異なります。

場所パスの構造
ローカルコンテンツ{content_root}/artists/{artist}/albums/{genre}/{album}/
ローカルオーディオ{audio_root}/artists/{artist}/albums/{genre}/{album}/
クラウド{artist}/{album}/(ジャンルなし)

ファイルはバケット内で次のように整理されます。

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

rock ジャンルの「my-album」を「bitwize」がリリースした場合の例:

  • ローカル:~/music/artists/bitwize/albums/rock/my-album/
  • クラウド:bitwize/my-album/promos/(bitwize/albums/rock/my-album/ ではありません)

コマンドのオプション

オプション説明
--type promosトラックのプロモーション動画のみアップロードします
--type samplerアルバムサンプラーのみアップロードします
--type all両方をアップロードします(デフォルト)
--dry-runアップロードせずにプレビューします
--publicファイルをパブリック読み取り可能に設定します
--audio-root PATH設定の audio_root を上書きします

呼び出し例

基本的なアップロード:

/bitwize-music:cloud-uploader my-album

プレビューのみ:

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

プロモーション動画のみアップロード:

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

パブリックアクセスを有効にしてアップロード:

/bitwize-music:cloud-uploader my-album --public

エラー処理

「クラウドへのアップロードが有効になっていません」

  • 設定に cloud.enabled: true を追加します
  • ${CLAUDE_PLUGIN_ROOT}/reference/cloud/setup-guide.md を参照してください

「認証情報が設定されていません」

  • 設定ファイルに認証情報を追加します
  • R2 の場合:account_id、access_key_id、secret_access_key
  • S3 の場合:access_key_id、secret_access_key

「アルバムが見つかりません」

  • {audio_root}/artists/{artist}/albums/{genre}/{album}/ にアルバムが存在することを確認します
  • 設定内のアーティスト名が一致していることを確認します

「アップロードするファイルが見つかりません」

  • 先にプロモーション動画を生成します:/bitwize-music:promo-director {album}

「アクセスが拒否されました」

  • 認証情報が正しいことを確認します
  • R2 の場合:API トークンに書き込み権限があることを確認します
  • S3 の場合:IAM ポリシーで s3:PutObject が許可されていることを確認します

「バケットが見つかりません」

  • 先にクラウドダッシュボードでバケットを作成します
  • 設定内のバケット名を確認します

セキュリティに関する注意事項

  • 認証情報は設定ファイルに保存されます(適切なファイル権限を設定してください)
  • ユーザーのコンテンツリポジトリでは、設定ファイルを gitignore に追加してください
  • デフォルトでは、ファイルは非公開でアップロードされます(公開されません)
  • --public フラグは、公開アクセスを意図したファイルにのみ使用してください
  • CI/CD では環境変数の使用を検討してください(今後の機能強化)

他のスキルとの連携

受け渡し元

promo-director:

プロモーションの生成後:

Promo videos generated successfully.

**Optional:** Upload to cloud storage: /bitwize-music:cloud-uploader {album}
受け渡し先

release-director:

クラウドへのアップロード後:

Cloud upload complete.

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

対応プロバイダー

Cloudflare R2
  • S3 互換 API
  • エグレス料金なし
  • グローバル CDN との連携
  • トラフィックの多いコンテンツに適しています
AWS S3
  • 業界標準
  • きめ細かな IAM 権限
  • CloudFront CDN を利用可能
  • AWS エコシステムとの連携に適しています

今後の機能強化

  • 環境変数による認証情報の設定(CI/CD 用)
  • 複数バケットへの対応
  • CDN の自動キャッシュ無効化
  • 大容量アップロード用のプログレスバー
  • 失敗したアップロードの再開
  • バケットが存在しない場合の作成
  • 追加プロバイダー(Backblaze B2、DigitalOcean Spaces)

関連ドキュメント

  • ${CLAUDE_PLUGIN_ROOT}/reference/cloud/setup-guide.md - 詳細なセットアップ手順
  • ${CLAUDE_PLUGIN_ROOT}/skills/promo-director/SKILL.md - プロモーション動画の生成
  • ${CLAUDE_PLUGIN_ROOT}/skills/release-director/SKILL.md - リリースのワークフロー

モデルの推奨

Sonnet 4.5 - このスキルはスクリプトを実行し、ワークフローを調整します。LLM による創造的な出力はありません。

バージョン履歴

  • v0.14.0 - 初回実装
    • boto3 経由の R2 および S3 対応
    • ドライランモード
    • 公開/非公開アップロードのオプション
    • アーティスト/アルバム別のパス整理

コメント