Reel Lab — Project Overview
The single reference page for the Reel Lab video studio: every feature we have discussed, the build phases, the technology underneath, and the decisions still open. Use this to add or edit items instead of re-discussing them.
How It Works — The Video Pipeline
Everything in the studio serves this pipeline. The interface follows the pipeline, not the model names.
1 · Gather
Pick the inputs: photo, reference video, character, voice, saved prompt. Everything reusable lives in the Library.
2 · Generate (the only paid step)
Starting image, video clip, voice. Each becomes a Job with a recorded cost.
3 · Review
Preview, then decide keep / retry / save. Nothing is charged for looking.
4 · Finish (free, local)
Captions, music, sound, graphics, trimming. Done with FFmpeg on the PC — no re-spend.
5 · Export (free, local)
Deliver in the shapes needed: portrait 9:16, square 1:1, landscape 16:9.
6 · Save & Reuse (free)
Anything worth keeping goes to the Library, tagged, ready to feed the next video.
Current Status — Honest Assessment
| Capability | Status | Notes |
|---|---|---|
| Simple prompt or base image → small motion clip | Strong | Our best and most reliable output |
| Basic captions / text overlay | Works Locally | Existing local overlay; not proof that the caption options feature is complete |
| Caption options: full word-for-word and important-words-only | Not Completed | Early priority; both modes need a usable workflow and tests |
| Continuations (last frame → next clip) | Decent | Coffee and shower continuations worked |
| Consistent character (stills) | Decent | Reference-image approach; not trained characters yet |
| Cost tracking and persistence | Done | Live in the panel |
| Timelapse / cleanup transformations | Weak | Garage test: clutter floated and disappeared. Physics not there yet |
| Real movements (cart, grill, stove) | Mixed | Kling motion-control: ghosting, duplicate people |
| Video mimic / human replacement | Unreliable | Ghosts and artifacts. Wan Animate still untested |
| Talking head / short yap videos | Not Built | Research done; needs text-to-speech and lip-sync |
| Podcast | Not Built | Research done; do edited shot / reverse-shot first |
| Voices / text-to-speech | Not Built | Easy to add; cheap (pennies per clip) |
| Music / sound effects | Not Built | Local mix with FFmpeg; free |
| Motion graphics | Not Built | FFmpeg can do it; free. Later priority |
| Longer segments / long-form videos | Not Built | Later priority |
Done Foundation
Private panel on a real domain. Upload (drag and drop) → starting image → 8-second video. Access-code sign-in. Cost per job plus running total. Prompts and photos persist across refresh. Refresh-jobs button. Sticky access code.
Active Library + Asset Vault (Phase 1)
Built and tested locally: save job outputs to our own never-expiring storage, organize with name, tags, and favorite, reuse as video inputs, sidebar navigation (Make / Library / Jobs / Settings). 49 of 49 tests pass.
Blocked on: enabling R2 storage on the Cloudflare account (a dashboard button only you can click). Until then the vault has no file storage behind it.
Feature Wishlist — Everything We Have Discussed
Listing order is not a build order. Each is built and reviewed one bounded piece at a time.
| # | Feature | What It Means | Status |
|---|---|---|---|
| 1 | Realistic short videos with text over them | The original ask; simple motion clips with overlaid text | Working |
| 2 | Quality at low cost | Never spend on auto-retries or premium models by default | Working |
| 3 | Consistent characters / avatars | The same person reusable across every video; reference images first, trained characters optional later | Partial |
| 4 | Talking head / yap videos | Short 8–60 second speaking videos with believable lip movement | Not Built |
| 5 | Timelapse / contractor transformations | Builds, cleanups, demolitions, interiors, movers — with a stable environment | Weak |
| 6 | One person doing real movements | Pushing a grocery cart, cooking at a grill, walking down the street filming herself | Mixed |
| 7 | Podcast | One or two people talking and interacting, natural feel | Not Built |
| 8 | Mimic a video / human replacement | Keep the reference action (like jump-roping) but replace the person with any character | Unreliable |
| 9 | Voices + script | Text-to-speech voiceover with scripts | Not Built |
| 10 | Motion graphics | Animated text, callouts, logos. Later priority; separate from basic captions | Not Built |
| 11 | Revisions | Fix a flaw (like a deformed arm) without redoing everything | Not Built |
| 12 | Private dashboard | See everything we have made with cost per job | Working |
| 13 | Caption options | Full word-for-word captions OR only important words and phrases highlighted. Early priority | Not Completed |
| 14 | Longer segments / long-form videos | Longer talking segments first, then complete long-form pieces. Later priority | Not Built |
| 15 | Background music / sound effects | Local mixing with FFmpeg; free | Not Built |
New Idea URL to UGC Video discussed, not started
The idea: paste a product page URL — starting with Amazon — and the studio pulls the product images and description automatically, then creates a UGC-style (user generated content) video promoting the product. No manual upload of product photos or copy-pasting descriptions.
What it would do
- Accept a product URL (Amazon first, other stores later).
- Fetch product images, title, and description.
- Build a short promotional script from the product details.
- Generate a UGC-style video (casual, person-on-camera feel) promoting it.
What needs deciding before building
- How to fetch Amazon data — Amazon blocks bots hard, so a scraping service or API may be needed.
- Does this need voice and captions built first to feel like real UGC?
- Where it sits in the build order (my lean: after captions, as its own Make workflow).
Reference tool: adskull.io — free URL-to-UGC-video tool (what this idea is modeled on).
Build Phases — One Piece At A Time
Each row is one finished, reviewable piece. Nothing starts until the previous one is reviewed (or explicitly shelved with a reason).
| Phase | Piece | Why In This Order | Finish Line |
|---|---|---|---|
| 0 | Foundation | The base studio must exist first | Done Private panel on a real domain: photo → image → video, cost tracking, persistence |
| 1 | Library + Asset Vault | Fixes expired provider links; everything after depends on it | Active Save any job output from any browser; find it by name and tag; reuse it as a video input; it never expires |
| 2 | Captions Workflow | Early priority; feeds every video goal | Real speech video in → timed captions → correct text and timing → export a captioned copy with original audio kept |
| 3 | Versions: Re-run With Changes | The revisions goal; cheap once jobs carry lineage | From any job, change the prompt and re-run; both versions visible and linked |
| 4 | Projects + Export Variants | The repurpose engine (shape, caption mode) | Assemble clips and captions in one project; export portrait and landscape copies |
| 5 | Characters in the Library | Must precede talking head, podcast, and replacement | One saved character used across two different videos and visibly consistent |
| 6 | Voices in the Library | Must precede talking head and podcast | One saved voice used in two different videos |
| 7 | Capability Workflows, one at a time | The hard video abilities; each adds exactly one Make card | Real movements → talking head → podcast → timelapse → mimic; each with agreed test examples and an honest quality bar |
| 8 | Motion Graphics + Long-Form | Stated last priorities | Defined when selected |
Tech Stack — Everything Under The Hood
Hosting & App
- Cloudflare Worker named
reel-labon the seosemworks account. Serves the panel and proxies all AI calls. - Live address: vstudio.viewervelocity.com (a Worker route on the viewervelocity.com domain).
- Staging: reel-lab-staging.seosemworks.workers.dev (Worker
reel-lab-staging). - Panel: plain HTML and JavaScript (no framework) in
app/public/index.html. Job history in browser storage. - API proxy:
app/worker.js— upload, image, video, status query, and library endpoints. The AI key never leaves the server.
AI Generation (RunningHub)
- RunningHub API (runninghub.ai) — one paid gateway for all generation models.
- Wan 2.2 — 8-second video clips. Portrait
720×1280and landscape1280×720. - Nano Banana 2 (economy) — starting images and character stills.
- Kling motion-control — real-movement tests (unreliable so far).
- Cost is read from the provider response on every job and shown in the panel.
Storage
- Cloudflare KV (
reel-lab-kv) — asset metadata: names, tags, favorites, lineage, cost. - Cloudflare R2 — the actual image and video bytes in the vault. Not yet enabled — waiting on the account setting.
- Saved assets get copied into our own storage the moment you save them, because provider links expire.
Local Finishing (free)
- FFmpeg on this PC — captions, music and sound mixing, voice, cropping, export.
- Python scripts — the original pipeline (
run_test.py, custom scenes, test runners) for work not yet in the panel. - Finishing never re-spends: only the Generate step costs money.
Code, Tests & Secrets
- GitHub: makbot2000/reel-lab (private).
main= production,staging= staging. - Tests: Node's built-in test runner, 8 suites / 49 tests, including real-Chrome browser flows. Run before every deploy.
- Access: one access code (the APP_TOKEN secret) typed once in the panel.
- Secrets: the RunningHub key and access code live only as Worker secrets — never in code or chat.
Known Format Limits
- Square video output is not supported by the current video model — shown honestly in the interface. Square images and square exports of existing video are fine.
- Generated videos are silent — sound is added locally.
- ETA shows "unavailable" until we have real completion history to estimate from. No invented countdowns.
Costs — Observed Prices
| Item | Cost | Notes |
|---|---|---|
| Image (Nano Banana 2 economy) | ~$0.027 each | Starting images and character stills |
| Wan 2.2 vertical video | ~$0.16 per 8-second clip | Our workhorse |
| Kling motion-control | ~$0.06 per second | Untested here for quality |
| Captions / music / voice mixing | Free | Done locally with FFmpeg |
| Text-to-speech voice | ~pennies per clip | When voices are built |
Deploy & Workflow
How Changes Go Live
- Work and commit on the
stagingbranch. - Deploy staging and test there.
- After review, merge
stagingintomain. - Deploy production (
vstudio.viewervelocity.com).
Tests run before every deploy. Production is never deployed from unreviewed work.
Deploy Commands (from the app folder)
# staging first npx wrangler deploy --config wrangler.staging.toml # production only after review npx wrangler deploy # regression tests before any deploy node --test --test-concurrency=1 \ tests/*.test.cjs tests/*.test.mjs
Where Everything Lives
- Project folder:
X:\Dropbox\hermes_projects\reel-lab\ - Source of truth for goals and status:
PLAN.mdin that folder - Studio map and build order:
INTERFACE-PLAN.md - Code:
app\(worker, panel, tests) - Generated media: stays on Dropbox only — never in git
Standing Rules
- Never resubmit a job on timeout — poll for status instead.
- Never auto-retry a paid job or fall back to a premium model.
- Paid generation stays behind an explicit click with the cost shown.
- Finishing work (captions, music, trimming) is always free and local.
- Test with clearly labeled fixtures; no paid generation just to grab a test sample.
Open Decisions
| Decision | Context | Status |
|---|---|---|
| Enable R2 storage on the Cloudflare account | The vault needs file storage. This is a dashboard setting only you can switch on. Everything else in Phase 1 is built and tested | Waiting On You |
| Review Phase 1 (Library) on staging | Once R2 is on: deploy staging, save real media end to end, then your review before production | Next Up |
| A real short video with speech | Needed to test the captions workflow. Generated clips are silent, so they cannot prove transcription or timing | Waiting On You |
| Where "URL to UGC Video" sits in the build order | My lean: its own phase after captions. Alternative: Phase 7 if the hard video abilities matter more | Your Call |
| How to fetch Amazon product data | Amazon blocks bots; likely needs a scraping service or product API. This shapes what the UGC feature can pull automatically | Your Call |
| Organizing style for the Library | Tags plus favorites (my lean — simple), or folders, or both | Your Call |
| Cost guardrail in Settings | Warn before any single job over a set amount? If yes, what amount? | Your Call |
Reel Lab project overview · vstudio.viewervelocity.com · GitHub repository · source of truth: PLAN.md + INTERFACE-PLAN.md in the project folder