feat: AI-generated shorts render pipeline

- Remotion composition (ShortsVideo) renders 1080x1920 9:16 shorts
  from script segments (hook/setup/conflict/insight/cta) with animated
  gradient background, word-by-word captions, progress bar
- render-worker.mjs: standalone poller (systemd hermyhq-render.service)
  TTS via edge-tts → Remotion render via Chrome headless → ffmpeg mux +
  thumbnail; ≤60s gate; marks YoutubeScript rendered
- API: POST /api/youtube/render (queue approved→render_queued),
  GET status, GET /render/file (stream video/thumb with Range support)
- Schema: YoutubeScript.videoUrl/thumbnailUrl + YoutubeRender model
- UI: youtube tab gains Renders view (preview/review/approve/reject/
  download), Render Shorts button on approved scripts
- Prisma db push applied to prod DB
This commit is contained in:
MythEclipse
2026-09-22 20:16:25 +07:00
parent 2a051875f3
commit 33e85ce8bf
11 changed files with 3272 additions and 89 deletions
+4 -1
View File
@@ -16,6 +16,8 @@
"dependencies": {
"@auth/prisma-adapter": "^1.6.0",
"@prisma/client": "^6.19.2",
"@remotion/cli": "^4.0.527",
"@remotion/google-fonts": "^4.0.527",
"@types/better-sqlite3": "^7.6.13",
"@types/formidable": "^3.4.6",
"better-sqlite3": "^12.11.1",
@@ -32,7 +34,8 @@
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dom": "19.2.3",
"recharts": "^3.7.0"
"recharts": "^3.7.0",
"remotion": "^4.0.527"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",