Skip to content
cccskills
FreePublished on GitHub

offload-r2

Move media assets from a Remotion repository to Cloudflare R2, update source references to public URLs, and verify that uploaded files match the originals before removing local copies.

OriginalShow the original description

Upload Remotion repository media assets to the Cloudflare R2 bucket behind remotion.media, switch source code to hosted URLs, verify the public objects, and remove repository-local copies.

Works withCloudflare
See how to install

Good for

  • Moving repository media assets to Cloudflare R2
  • Updating source references to hosted media URLs
  • Verifying uploaded files before deleting local copies
  • Replacing hosted assets with versioned URLs

Files included (2)

  • SKILL.md2.9 KB
  • agents/openai.yaml225 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

Offload R2 Asset

Host media on https://remotion.media/, update every in-scope source reference to the public object, and remove the repository-local copy after verification.

Workflow

  1. Find the main worktree with git worktree list --porcelain. Prefer the worktree on refs/heads/main, normally /Users/jonathanburger/remotion.

  2. Choose a stable, descriptive object key. Use a feature-specific directory prefix when it prevents collisions, for example studio-close-ups/demo.mp4. When replacing an asset, prefer a new versioned key so browser and Studio caches cannot serve the previous bytes.

  3. Load credentials from the main worktree without printing them:

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

    The required variables are AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.

  4. Upload to the parser-media bucket with Bun's S3-compatible client:

    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. Verify the public object and compare its SHA-256 hash with the local file before removing anything:

    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. Replace every in-scope source usage with the public URL. Do not wrap remote URLs in staticFile() because it rejects http:// and https:// URLs.

  7. After the public hash matches and source references are remote, remove the local copy. Use git rm -- <local-file> for a tracked file or remove the exact untracked/ignored file directly. Remove obsolete asset-specific .gitignore entries and empty asset directories. Do not use recursive deletion or broad globs.

  8. Verify the local copy is gone and search the affected package for remaining local references:

    test ! -e <local-file>
    rg -n '<local-filename>|staticFile\(' <affected-package>
    
  9. Run focused lint or style checks for touched packages. Commit or push only when requested.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

add-bug

FreeSummary

Add a reported Remotion bug to the bugs API with its affected versions, a short title, and upgrade guidance. Follow the existing entry format and place the new record first so recent bugs appear at the top.

  • Adding a reported bug to the Remotion bugs API
  • Recording which versions a bug affects
  • Including upgrade guidance in a bug description
remotion-dev/remotion65.2KUpdated Oct 19, 2026

add-cli-option

FreeSummary

Add a Remotion command-line or configuration option, or convert a hardcoded flag into a shared option definition. Connect parsing, configuration setters, help entries, and generated documentation so the option is consistently available and documented.

  • Add a new Remotion command-line flag
  • Convert a hardcoded flag into a shared option
  • Connect an option to Config setters
remotion-dev/remotion65.2KUpdated Oct 19, 2026

add-effect

FreeSummary

Add a new effect to @remotion/effects, including its implementation, package entry points, documentation, interactive demo, and preview images. Follow the package conventions and verify the changes with tests, formatting checks, and builds.

  • Implementing a new effect for @remotion/effects
  • Registering effect imports and parameter types
  • Creating documentation and an interactive effect demo
remotion-dev/remotion65.2KUpdated Oct 19, 2026

add-expert

FreeSummary

Add a person to the Remotion experts page by placing their portrait, entering their profile and contact links, and generating an expert card image. The instructions specify file locations, profile fields, and how to verify card generation.

  • Add a new person to the Remotion experts page
  • Register a portrait, specialties, and contact links
  • Generate an expert card image
remotion-dev/remotion65.2KUpdated Oct 19, 2026

add-new-package

FreeSummary

Create a new @remotion package within the Remotion monorepo, a repository containing multiple packages. Set up its files, register it across the project, and prepare documentation, usage examples, and build configuration.

  • Creating a new @remotion package
  • Registering a package across the monorepo
  • Adding documentation and usage examples
remotion-dev/remotion65.2KUpdated Oct 19, 2026

add-sfx

FreeSummary

Add a new sound effect to @remotion/sfx, from registering the audio file to exporting its URL and documenting its use. The workflow covers playback examples, attribution, navigation entries, waveform generation, and the package build.

  • Add a sound effect to @remotion/sfx
  • Create documentation with playback and usage examples
  • Update sound effect navigation and waveform data
remotion-dev/remotion65.2KUpdated Oct 19, 2026

See all skills by remotion-dev

Report a problem with this skill