在线试用: GitHubUnwrapped.com
这是一个为每个GitHub用户生成年度回顾视频的平台。使用Vite 5、Remotion和AWS Lambda构建。
制作你自己的版本
想为你的用户制作自己的年度回顾吗?
- 开发者:欢迎fork并使用这个仓库作为模板!请注意本README底部的法律免责声明。
- 非开发者:在2024年秋季写信至hi@remotion.dev获取免费咨询!
设置
-
运行
npm i
安装依赖。 -
将
.env.example
重命名为.env
。 -
按照Remotion Lambda - 设置指南设置你的AWS账户。我们使用多个账户进行负载均衡:
- 使用
AWS_KEY_1
替代REMOTION_AWS_ACCESS_KEY_ID
,使用AWS_SECRET_1
替代REMOTION_AWS_SECRET_ACCESS_KEY
。 - 你可以使用
AWS_KEY_2
和AWS_SECRET_2
在两个账户间进行负载均衡,或者粘贴相同的凭证以使用同一个账户。 - 在
src/helpers/set-env-for-key.ts
中,我们轮换环境变量。
- 使用
-
将函数部署到你的AWS账户:
npx tsx deploy.ts
注意,某些AWS区域默认被禁用。如果遇到错误,请启用它们或仅限制使用默认区域。
-
为了缓存视频和GitHub API响应,设置一个MongoDB(我们使用免费的MongoDB Atlas云实例)来保存视频。通过填写
.env
中的值设置连接字符串。 -
要从GitHub获取数据,在用户设置中创建一个个人访问令牌(无需授予任何范围,GraphQL API需要身份验证以获取公共信息),并将其设置为
GITHUB_TOKEN_1
。添加更多令牌GITHUB_TOKEN_2
等将轮换个人访问令牌。 -
提供
DISCORD_CHANNEL
和DISCORD_TOKEN
值以将监控日志发送到Discord。 -
添加
SENTRY_DSN
环境变量以获取错误报告。
现在你已经设置好所有环境变量。
运行Web应用:
npm run dev
在Remotion Studio中编辑模板:
npm run remotion
要部署,请将你的仓库连接到Render。别忘了在那里也设置环境变量。
扩展策略
为了允许数千人同时渲染他们的视频,我们采用了多种扩展策略:
- 尽可能缓存视频。在每次渲染之前,会在MongoDB数据库中创建一个锁,以避免意外为同一GitHub用户创建多个渲染。
- 渲染分布在多个AWS区域和账户中,以避免达到并发限制。
致谢
我们感谢GitHub和For One Red在实现和推广这个项目方面的支持。
音频版权声明
音频是从SmartSound为GitHubUnwrapped.com授权的。如果你创建衍生项目,必须联系他们获得授权。
许可
本仓库中的代码:采用MIT许可。 Remotion框架(本项目的依赖项):公司需要获得付费许可。在此处阅读条款。