mcpField
O
offload-r2

offload-r2

github.com/remotion-dev云与 DevOps68.6k290 次安装今天更新
代码仓库

关于 offload-r2

offload-r2 是将媒体资源迁移到 Cloudflare R2 并更新代码引用的仓库工作流程,供开发者在验证远程文件后清理本地副本。

主要功能

  1. 01将资源上传到 parser-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。不要将远程 URL 包装在 staticFile() 中,因为它会拒绝 http:// 和 https:// URL。

  7. 公开对象的哈希值匹配且源引用已改为远程 URL 后,删除本地副本。对于已跟踪文件,使用 git rm -- <local-file>;对于未跟踪或被忽略的文件,直接删除确切文件。删除过时的资源专用 .gitignore 条目和空资源目录。不要使用递归删除或宽泛的 glob。

  8. 验证本地副本已删除,并搜索受影响的软件包中是否还存在本地引用:

    test ! -e <local-file>
    rg -n '<local-filename>|staticFile\(' <affected-package>
    
  9. 对已修改的软件包运行有针对性的 lint 或样式检查。仅在收到请求时提交或推送。

评论

支持 Markdown