offload-r2 について
offload-r2 は、メディアを Cloudflare R2 に移し、ソース内の参照を更新するリポジトリ向け手順です。リモートファイルの検証後にローカルコピーを削除する開発者向けです。
主な機能
- 01parser-media バケットへのアップロード
- 02安定したバージョン付きオブジェクトキーの選択
- 03リモートのサイズと SHA-256 の検証
- 04ローカル参照を公開 URL に置換
- 05検証後のローカルアセット削除
- 06変更したパッケージの重点チェック
活用シーン
- 01メディアファイルの remotion.media へのホスティング
- 02ソースコード内のリポジトリアセットの置換
- 03アセット更新後に古いファイルが配信される事態の回避
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ remotion-dev/ remotion --skill offload-r2インストール後、Claude Code で/offload-r2を入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
R2 アセットのオフロード
メディアを https://remotion.media/ でホストし、対象となるすべてのソース参照を公開オブジェクトに更新して、検証後にリポジトリ内のコピーを削除します。
ワークフロー
-
git worktree list --porcelainでメインのワークツリーを確認します。refs/heads/main上のワークツリーを優先します。通常は/Users/jonathanburger/remotionです。 -
安定した、内容がわかりやすいオブジェクトキーを選びます。衝突を防げる場合は、機能固有のディレクトリプレフィックスを使用します。たとえば、
studio-close-ups/demo.mp4です。アセットを置き換える場合は、ブラウザーや Studio のキャッシュから以前のバイト列が返されないよう、新しいバージョン付きキーを使用することをおすすめします。 -
認証情報を表示せずに、メインのワークツリーから読み込みます。
--env-file=/Users/jonathanburger/remotion/packages/remotion-media/.env必須の変数は
AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYです。 -
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);" -
何かを削除する前に、公開オブジェクトを検証し、その 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)" -
対象となるすべてのソース参照を公開 URL に置き換えます。
staticFile()はhttp://とhttps://の URL を拒否するため、リモート URL をstaticFile()で囲まないでください。 -
公開オブジェクトのハッシュが一致し、ソース参照がリモート URL に更新されたら、ローカルコピーを削除します。追跡対象のファイルには
git rm -- <local-file>を使用し、追跡対象外または無視対象のファイルは正確なパスを指定して直接削除します。古くなったアセット固有の.gitignoreエントリと、空のアセットディレクトリを削除します。再帰的な削除や広範囲に一致する glob は使用しないでください。 -
ローカルコピーがなくなったことを確認し、影響を受けるパッケージ内にローカル参照が残っていないか検索します。
test ! -e <local-file> rg -n '<local-filename>|staticFile\(' <affected-package> -
変更したパッケージに対して、対象を絞った lint またはスタイルチェックを実行します。依頼された場合のみコミットまたはプッシュします。