mcpField
O
offload-r2

offload-r2

github.com/remotion-devクラウド・DevOps68.6k290 回インストール今日更新
リポジトリ

offload-r2 について

offload-r2 は、メディアを Cloudflare R2 に移し、ソース内の参照を更新するリポジトリ向け手順です。リモートファイルの検証後にローカルコピーを削除する開発者向けです。

主な機能

  1. 01parser-media バケットへのアップロード
  2. 02安定したバージョン付きオブジェクトキーの選択
  3. 03リモートのサイズと SHA-256 の検証
  4. 04ローカル参照を公開 URL に置換
  5. 05検証後のローカルアセット削除
  6. 06変更したパッケージの重点チェック

活用シーン

  1. 01メディアファイルの remotion.media へのホスティング
  2. 02ソースコード内のリポジトリアセットの置換
  3. 03アセット更新後に古いファイルが配信される事態の回避

インストール

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

$npx skills add https://github.com/remotion-dev/remotion --skill offload-r2

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

同梱ファイルagents/openai.yaml

詳細

R2 アセットのオフロード

メディアを https://remotion.media/ でホストし、対象となるすべてのソース参照を公開オブジェクトに更新して、検証後にリポジトリ内のコピーを削除します。

ワークフロー

  1. git worktree list --porcelain でメインのワークツリーを確認します。refs/heads/main 上のワークツリーを優先します。通常は /Users/jonathanburger/remotion です。

  2. 安定した、内容がわかりやすいオブジェクトキーを選びます。衝突を防げる場合は、機能固有のディレクトリプレフィックスを使用します。たとえば、studio-close-ups/demo.mp4 です。アセットを置き換える場合は、ブラウザーや Studio のキャッシュから以前のバイト列が返されないよう、新しいバージョン付きキーを使用することをおすすめします。

  3. 認証情報を表示せずに、メインのワークツリーから読み込みます。

    --env-file=/Users/jonathanburger/remotion/packages/remotion-media/.env
    

    必須の変数は AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY です。

  4. Bun の S3 互換クライアントを使って parser-media バケットにアップロードします。

    bun --env-file=/Users/jonathanburger/remotion/packages/remotion-media/.env -e "import {S3Client} from 'bun'; const filePath='<local-file>'; const key='<object-key>'; const client=new S3Client({accessKeyId:Bun.env.AWS_ACCESS_KEY_ID,secretAccessKey:Bun.env.AWS_SECRET_ACCESS_KEY,endpoint:'https://2fe488b3b0f4deee223aef7464784c46.r2.cloudflarestorage.com',bucket:'parser-media'}); const bytes=new Uint8Array(await Bun.file(filePath).arrayBuffer()); await client.write(key,bytes); const remote=await client.file(key).arrayBuffer(); if (remote.byteLength!==bytes.byteLength) throw new Error('Size mismatch'); console.log('uploaded',key,remote.byteLength);"
    
  5. 何かを削除する前に、公開オブジェクトを検証し、その SHA-256 ハッシュをローカルファイルと比較します。

    curl -I --fail https://remotion.media/<object-key>
    test "$(shasum -a 256 <local-file> | cut -d' ' -f1)" = "$(curl --fail --silent https://remotion.media/<object-key> | shasum -a 256 | cut -d' ' -f1)"
    
  6. 対象となるすべてのソース参照を公開 URL に置き換えます。staticFile() は http:// と https:// の URL を拒否するため、リモート URL を staticFile() で囲まないでください。

  7. 公開オブジェクトのハッシュが一致し、ソース参照がリモート URL に更新されたら、ローカルコピーを削除します。追跡対象のファイルには git rm -- <local-file> を使用し、追跡対象外または無視対象のファイルは正確なパスを指定して直接削除します。古くなったアセット固有の .gitignore エントリと、空のアセットディレクトリを削除します。再帰的な削除や広範囲に一致する glob は使用しないでください。

  8. ローカルコピーがなくなったことを確認し、影響を受けるパッケージ内にローカル参照が残っていないか検索します。

    test ! -e <local-file>
    rg -n '<local-filename>|staticFile\(' <affected-package>
    
  9. 変更したパッケージに対して、対象を絞った lint またはスタイルチェックを実行します。依頼された場合のみコミットまたはプッシュします。

コメント