Personal project · Built & deployed by Bill Klinten Guduru

Project HER — AI Video Creation Studio

Turn a topic, story, or article into a narrated short video, right here.

Python / Flask · Gemini · Remotion / React · FFmpeg · Google Cloud Run

Make something

Video Creation Studio

Watch a real example ↓

Create your video

0 / 6000 characters · 0 words
Try an input:

Examples fill the input only. Generation uses real services and can fail or reach a usage limit.

Project HER chooses the narration, visual style, timing and format. Editorial videos use the default vertical layout.

Checking the backend’s enforced generation limits…

Video workspace

JavaScript connects the studio to the video backend

No video has been generated in this session.

    Your video will appear here after a successful generation.

    Explore a previously generated example ↓

    Only the job identifier and its scoped access token are kept in this browser tab for recovery. Input is not saved in browser storage. Do not submit private or confidential material. Images may be illustrative reconstructions.

    Previously generated example

    Poster from the previously generated Zheng Yi Sao video, using illustrative artwork
    Saved Project HER Remotion render · 56.1 seconds · AI illustrative reconstructions

    Featured story

    Zheng Yi Sao

    A narrated short about the pirate leader and the alliance she led in the South China Sea. The video uses generated illustrations; they are not documentary portraits or footage.

    1. 1807 She takes command of a large pirate fleet after her husband's death.
    2. At sea Her forces resist imperial fleets and raid merchant vessels and coastal towns.
    3. 1810 As pressure and internal rivalries grow, she negotiates a pardon and retires with her wealth.
    4. 1844 The narration closes with the year of her death.

    This is an unchanged local render from saved narration and visuals, not a video made in this browser session. Historical claims and artwork have not been independently verified.

    How it works

    1. 01 · InputSubmit a topic, a supplied story, or a public article URL. News can research or respect supplied facts.
    2. 02 · ScriptContent processing and Gemini prepare source-linked narration and scene subjects.
    3. 03 · Voice & timingTTS produces speech. Provider marks or forced alignment anchor text to the audio.
    4. 04 · Visual assetsRelevant portraits, reference media and disclosed illustrations are retrieved or generated.
    5. 05 · CompositionRemotion composes timed layers. FFmpeg processes the media and validates delivery.

    The portfolio sends jobs to the HER backend on Cloud Run. Rendering stays there; the static portfolio never renders video in its page or build process.

    Engineering the complete workflow

    The problem & my contribution

    A short video requires more than a model response: a usable script, relevant visuals, narration, captions, scene transitions and a playable export. Article quality and available media vary, so every handoff affects the result.

    This is my personal build, separate from employer-owned engineering work and hackathon prototypes. I connected content processing, media preparation, audio timing, programmatic composition and a deployed application. The native studio brings that workflow into the portfolio while keeping rendering and provider credentials on the backend.

    Architecture: a native client and an isolated rendering backend

    This portfolio uses static HTML, CSS and JavaScript on GitHub Pages. A typed JavaScript client submits HTTPS jobs to a scoped Flask API on Cloud Run. Flask/Gunicorn coordinate the Python pipeline; React is used by Remotion compositions. No iframe or redirect is involved in creation.

    News/editorial uses Pydantic plans, source and asset provenance, timed narration and independent frame layers. Classic uses the existing general orchestrator. The adapter validates the supported public options rather than passing arbitrary model names or filesystem paths to the engine.

    Async jobs, synchronization & reliable delivery

    Real stage changes arrive through authenticated fetch-based SSE, with polling of the same job record when a stream disconnects. A scoped job token supports recovery in the current browser tab. Only backend-confirmed completion reveals the generated player; a playable video must load before its download appears.

    The native API adds transactional durable job/quota records and private Cloud Storage output. Expiring media tickets authorize byte-range playback and downloads. Production needs those services provisioned before generation can be enabled; the studio reports an honest unavailable state otherwise. Accepted paid work is not automatically replayed after a worker restart.

    Speech, scene boundaries and text reveals share the audio clock. Sample-accurate decoded PCM assembly avoids MP3 duration/padding errors. Replicate speech requests are paced and rate-limit retries preserve the provider. Alignment confidence and illustration provenance remain inspectable, without claiming perfect synchronization or historical fidelity.

    Cost, security & failure boundaries

    Anonymous jobs have server-enforced input/duration limits, shared daily and network-identity quotas, a global concurrent-render limit and a kill switch. Article retrieval validates resolved public addresses and each redirect. Provider keys stay on the server; one job token cannot access another visitor’s output. Production also locks the old public generation/history/output endpoints to operator access so they cannot bypass the native safeguards.

    URL extraction, media relevance, third-party quotas and factual accuracy remain fallible. Classic does not support cancellation; News does. A cancellation request is not reported as completed until the backend confirms it. Render times and availability depend on inputs and external services; no throughput, uptime or quality guarantee is implied.

    Evidence, deployment & current limitations

    The previously generated example is a byte-identical local HER Remotion artifact with measured 1080×1920, 30fps H.264/AAC output and saved source/narration provenance. It is not evidence of a newly executed public job.

    The studio checks the native API before enabling generation. Source-level contract, fixture and responsive checks are distinct from a production end-to-end generation test. A reachable Cloud Run landing page alone does not establish that live generation works.

    Implementation and deployment evidence is maintained in the project handoff. Cloud Run deployment reference · Explore other projects