[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-95874":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},95874,"unreel","blendi-remade\u002Funreel","blendi-remade","Your personal AI video streaming service","",null,"TypeScript",140,28,1,0,24,4.39,false,"main",true,[],"2026-09-21 02:04:28","# UNREEL\n\n**Endless television. Written and rendered while you watch.**\n\nUNREEL is a streaming service where nothing on it exists until you press play. Pick a title and a showrunner LLM writes the episode a few shots at a time while [MiniMax H3 Max Turbo](https:\u002F\u002Ffal.ai\u002Fmodels\u002Fminimax\u002Fh3-max-turbo\u002Ftext-to-video) renders each shot live on [fal](https:\u002F\u002Ffal.ai). Turbo renders faster than the clip plays, so the next shot is always finished before the current one ends. That one fact is what makes an infinite channel possible.\n\n![The UNREEL browse page](docs\u002Fbrowse.jpg)\n\n## What is on it\n\n**Original films.** Fourteen of them, across hard sci-fi, cyber-noir, western, folk horror, heist, romance, boxing, dark fantasy and more. Each one is a single continuous take: every shot starts from the exact last frame of the previous one, so the film keeps its characters, its light and its place while the story moves. Dialogue is scripted word for word and shown as captions.\n\n**Live channels.** Eight brainrot channels that hard-cut between escalating gags. Capybara News Network, Goblin Tax Season, Toaster Court, Dad Rock Volcano. Never the same twice.\n\nEvery cover is key art painted by [Nano Banana 2](https:\u002F\u002Ffal.ai\u002Fmodels\u002Ffal-ai\u002Fnano-banana-2) with the title typography rendered into the image. Every card hover, billboard loop and cold open is a Turbo clip.\n\n![Hollow Creek, mid-watch](docs\u002Fwatch.jpg)\n\n## How a stream works\n\n```\npress play\n  │\n  ├─ the pre-rendered preview plays instantly as the cold open\n  ├─ the showrunner writes 1 shot (about 2s), then 4, then 10 at a time\n  └─ shot 1 renders from the cold open's last frame (about 2.5s)\n        │\n        ▼\n  each shot renders while the previous one plays,\n  chaining from its last frame, and the buffer grows\n        │\n        ▼\n  the player swaps to the next clip the instant the current one ends\n```\n\nA few details that matter:\n\n- **Speech.** The video model babbles unless voices are declared wordless, and speaks a line cleanly only when the prompt quotes it verbatim. The showrunner writes every line in quotes; the code adds the matching sound clause and shows the line as a caption. Verified with Whisper.\n- **Continuity.** Story shots use image-to-video from the previous shot's last frame, grabbed in the browser from a same-origin proxy. A rendered clip becomes playable the moment it exists; only the next shot waits for the frame.\n- **Pacing.** At 480P an 8-second shot renders in about 2.5 seconds, so the buffer fills within two shots. 768P renders in about 5 seconds and barely keeps pace once the frame handoff is added, so 480P is the default. It is one constant in `lib\u002Fstream.ts`.\n- **Opening.** The first LLM call is on the critical path and LLM latency has a long tail, so it is hedged: two identical requests, first to parse wins. If the first shot still misses the end of the cold open, the player holds the last frame for a beat rather than showing a spinner. The next shot starts from that frame, so the cut is seamless.\n- **Keys.** `FAL_KEY` stays server-side behind `@fal-ai\u002Fserver-proxy`. Clips stream through a small media proxy so canvas frame grabs never hit CORS.\n\n## Stack\n\n- Next.js 15, React 19, TypeScript. No UI framework.\n- [fal](https:\u002F\u002Ffal.ai) for everything generated: MiniMax H3 Max Turbo for video, Nano Banana 2 for key art, Gemini 2.5 Flash via fal's LLM router for the showrunner.\n- A small client-side state machine (`lib\u002Fstream.ts`) that owns the shot queue, the render buffer and the last-frame chain.\n\n## Quick start\n\n```bash\nnpm install\ncp .env.example .env.local   # add your fal key\nnpm run catalog              # paints 22 covers and films 22 previews, about 2 minutes\nnpm run dev\n```\n\nGet a key at [fal.ai\u002Fdashboard\u002Fkeys](https:\u002F\u002Ffal.ai\u002Fdashboard\u002Fkeys). The catalog build is a one-off and costs roughly $0.08 per cover and $0.06 per preview. `npm run catalog` skips titles that are already built; use `--force`, `--only \u003Cid>`, `--covers` or `--previews` to rebuild parts of it.\n\n## Cost while watching\n\nA story title renders an 8-second shot roughly every 8 seconds of playback. A chaos channel renders 5-second shots two at a time. At Turbo's current rate a ten-minute session is well under a dollar, plus a few cents of LLM calls. Close the tab to stop.\n\n## Add a title\n\nEverything lives in `catalog\u002Ftitles.mjs`: a logline, a premise for the showrunner, a visual style appended to every shot, a key-art prompt and a preview prompt. Set `mode` to `story` for a chained film or `chaos` for a hard-cutting channel, add the id to a row, run `npm run catalog -- --only your-id`, and it is on the shelf.\n\nRename the whole service in `lib\u002Fbrand.ts`.\n","UNREEL 是一个实时生成式AI视频流服务，用户点击播放后，由大语言模型（LLM）动态编写剧情分镜，再通过文本到视频模型（MiniMax H3 Max Turbo）逐段渲染成连续视频流，实现‘边播边生成’的无限频道体验。核心特点是帧级连续性（每段视频起始帧严格继承上一段末帧）、语音与字幕精准同步（LLM输出带引号台词，自动触发语音合成并校验）、以及预缓冲式流控机制（渲染快于播放，保障无缝切换）。适用于AI原生内容探索、个性化影视实验、低延迟生成式媒体原型开发等场景。",2,"2026-09-05 02:30:06","CREATED_QUERY"]