vvv · private repositoryold viralvideogen
Video in. Original out. Measured in between.
vvv (h3v on the command line) analyses a reference video and produces an original, production-ready package: the story, its character and visual bibles, image and animation prompts, narration, a measured cut and its caption. It serves a US storytelling account and a Brazilian TikTok Shop, and it never believes a result it has not measured.

Six figures from myth, six apps I want to build.
Around the pipeline I am drawing a family of six apps. Each one gets a figure from Greek myth and one signature color, in classical engraving with a dithered print texture on deep navy ink.
I picked myth because each figure already has a job. Hermes moves things, Orpheus makes sound, Atlas carries the weight. It is a design direction and a concept so far: the apps are in development, and the pipeline above is the part that exists today.

Status: visual direction and concept, in development. The lines below say what each app is meant to do, not what already runs.

VVV Video EditorTimeline, cuts, transitions and narration. Hermes carries things from one place to another, which is what a cut does.

VVV Effects StudioVisual effects, compositing and masks. Hecate keeps the crossroads, where one image turns into another.

VVV Audio StudioEditing, mixing, sound design, voice and tracks. Orpheus moved the world with a lyre.

VVV 3D StudioModeling, meshes, materials, scenes and 3D assets. Hephaestus is the god at the forge.

VVV Media LibrarySearch, organizing and managing media. Mnemosyne is memory, and a library is where memory lives.

VVV CloudSync, storage, backup and collaboration. Atlas holds up the whole sky so everything else can stay put.
One command per stage, three human steps.
There is no single command from reference to post, on purpose. Each stage writes a file the next one checks, and three steps stay human: writing the story, generating the media through the MCP tools an agent calls, and deciding to post.
h3v analyze ./reference.mp4# scene map, keyframes and transcript, without sending every frame to a modelh3v draft promote ./story_idea.json# a story written in chat enters here, validated and unpaidh3v validate ./tiktok_project.json# schema, timeline and prompts, checked offline before a credit is spenth3v render ./tiktok_project.json# the ordered job list; the agent runs each job through MCPh3v verify-narration ./tiktok_project.json --plan ./render_plan.json# every clip transcribed back and compared with its line, and its voice with the othersh3v concat ./tiktok_project.json --plan ./render_plan.json# one file, levels matched, captions burned in on the storytelling accounth3v publish check ./tiktok_project.json --video ./final.mp4 --profile ./publishing_profile.json# ready or blocked, every finding marked verified or attested; it never posts
Six stages, each one checked before the next.
#1 analyse
Read the reference
Scene changes, visual similarity and transcript boundaries pick the frames worth looking at. What gets extracted is the structure: pacing, beats, archetypes, the twist.
#2 write
Write an original story
The reference lends its mechanics, never its plot: a new hook, open loops, a twist between 55% and 75% of the runtime, a payoff and a moral.
#3 fix
Fix who everyone is
A character bible holds each face, age and wardrobe; a visual bible holds the light, the lens and the palette. Every prompt reuses them word for word.
#4 prompt
Two prompts per scene
The image prompt defines the visual state; the animation prompt defines what changes over time. Collapsing the two is how characters drift.
#5 generate
Generate through the agent
h3v plans the jobs and records what comes back; the agent calls the image and video models through MCP. h3v holds no provider credential, so it cannot pretend to have called one.
#6 assemble
Assemble what was measured
Clips are decoded and timed, the narration is read back, levels are matched, captions are burned in, and a gate says ready or blocked before anyone posts.
A result is measured before it is believed.
AI providers report success generously. A job marked completed can point at a picture instead of a video, a clip can come back shorter than it was asked to be, and a take can say the right words in a second actor’s voice. The first and the last of those happened here, before a check existed for them.
- `record` decodes every returned file. One that is not a readable video becomes missing; one that is has its measured duration recorded in place of the claimed one.
- `assemble` totals measured durations, not requested ones, and warns when the gap passes one second.
- `verify-narration` transcribes each clip locally and compares it with its line, then flags a clip whose median pitch drifts two semitones from the cut’s, and blocks at three.
- `compose verify` measures how much a product photograph changed inside the region a model was told to preserve, because the product in a Shop video has to be the real one.
- `publish check` labels every finding verified, when it measured the file itself, or attested, when a person asserted it. Presenting one as the other would be fabricated verification.

One pipeline, two different businesses.

US storytelling
Emotional stories of 65 to 90 seconds in native American English, assembled from short clips. The viewer pays in attention, and the video is finished when they feel something. It is posted by hand, after the gate says ready.
Brazilian TikTok Shop
Product videos in Brazilian Portuguese that must depict the real product, down to the brand printed on it, and end in one clear ask. They pass product, claim and compliance checks; the publishing path runs through TikTok Shop’s own API (upload, TikTok’s precheck, post, status) and is built and tested, with no live post recorded yet. In a LIVE, the machine prepares the host and never speaks.
Counted, not recalled.
Counted in the repository on 2026-09-27. The project record shows the same figures.
- Specifications
- 37specs/, 2026-07-03 to 2026-09-27
- Machine-readable contracts
- 28schemas/, one JSON Schema per persisted shape
- Test functions
- 1782tests/, Python, 2026-09-27; 21 more in Go
- CLI commands
- 71src/h3v/cli.py, 2026-09-27
- Lint gate
- 9.9 / 10pylint fail-under, enforced in CI
What a reader asks first.
Is the code public?
No. The repository is private, so this page summarises what the project does and links to nothing inside it. The project record has the longer account, and the numbers here were counted in the repository itself.
Does it post by itself?
Not on the storytelling account: the gate reports ready or blocked, and a person posts. On the Shop account, the path through TikTok’s API is built and tested against a fake client; it runs only when the operator confirms or schedules a job, and no live post has been recorded yet.
Why is there no single command from video to post?
Three stages make paid model calls, and a chain that runs end to end spends money on its own mistakes. Driving it stage by stage puts a checked file, not a hope, between every paid step.
Does it promise reach or monetisation?
No. No hashtag, duration, resolution or model produces reach, and a video longer than a minute does not guarantee payment. The pipeline makes each attempt cheaper and more honest; what the platform does afterwards is up to the platform.
read the project record · privacy policy for this app · terms of service for this app