Dark channel · faceless documentary

From topic to YouTube, no manual steps

You write the topic in 6 lines. docflow handles the script, images, videos, narration, assembly and publishing.

docflow banner: a topic becomes a documentary
In short

docflow is a command-line tool that creates short narrated documentaries, the kind used on "dark" YouTube channels where nobody appears on screen. You answer 6 questions in a file (topic, style, duration, duration of each scene, format and references) and it does the rest: it writes the script, generates the images and videos for each scene, narrates, assembles everything with music and transitions, and publishes to YouTube. It automatically recreates a process that is normally done by hand in ChatGPT, Google Flow and CapCut. To use it, you need Linux with Python, ffmpeg and Codex.

What it is

A manual 6-step process became one command

The starting point was a dark-channel tutorial: GPT for the script, Google Flow for images and videos, AI Studio for the voice, Flow Music for the soundtrack, CapCut for assembly and manual upload. docflow runs the same steps on its own.

The six docflow steps: script, images, video, narration, assembly and YouTube

📝 The script "flow"

The same 6 questions from the tutorial, answered in a tema.yaml file. Codex (through your subscription) returns the script, narration, numbered image and video prompts, a music prompt, and the title, description and tags.

🔁 Swappable engine

Image and video come from Google Flow (automated in the browser) or from the Agnes API (image and image→video, US$ 0). Narration, assembly and publishing are the same for both.

✂️ CapCut in ffmpeg

It fits each clip to the timing of the speech, adds a transition between scenes, a fade from black, ambient sound at 16% and music that ducks on its own when the voice speaks. Then it publishes through yt-pubx.

How it works

Five steps, each one a command

All of them can be repeated: they redo only what is missing. The material is stored numbered by scene in ~/projetos/output/docflow/<slug>/.

tema.yaml→ script (Codex)→ generate (Flow or Agnes)→ narrate (inemavox)→ assemble (ffmpeg)→ publish (yt-pubx)
A

Automated Flow

Google account. A robot (Playwright) opens Flow, pastes the prompt blocks into the agent, approves, requests the collection and downloads the zip. Written, not yet validated: the first login is still missing.

B

Codex + Agnes

Images with agnes-image-2.1-flash and video with agnes-video-v2.0 (image→video), through the API, at zero cost. Tested: it made the example video.

C

Local (planned)

No API: flux2-klein for images and image-with-motion for video. Not implemented yet.

Prerequisites

What needs to be installed

docflow orchestrates tools that already exist. Check them before your first use.

Python + ffmpeg

Python 3 with PyYAML for the orchestrator and ffmpeg for assembly.

# check
python3 -c "import yaml"
ffmpeg -version

Codex CLI

Writes the script through your subscription. The model can be changed with the DOCFLOW_CODEX_MODELO variable.

# check
codex --version

Voice, image and YouTube

inemavox running (port 8010) for narration, the Agnes client from videos-agnes and yt-pubx with the channel authorized. For the Flow engine: Node + Playwright.

# check
~/projetos/yt-pubx/yt-pubx canais
Usage guide · step by step

From topic to published video

Real example: the video "Ancient Egypt in one minute", made with the Agnes engine.

1

Answer the 6 questions

Copy temas/egito.yaml and change the topic. 60 s of total duration with 10 s scenes gives 6 scenes.

slug: egito-antigo
tema: "Ancient Egypt in one minute: from the Nile to the pyramids..."
estilo: "realistic cinematic documentary, natural golden light"
duracao_total: 60
duracao_cena: 10
formato: "16:9"
motor: agnes      # flow | agnes
voz: nei
thumb_cena: 3     # image used for the thumb
canal: lives10
2

Run everything at once

Script, images, videos, narration and assembly. In the example it took about 9 minutes.

./docflow tudo temas/egito.yaml  # → ~/projetos/output/docflow/egito-antigo/final.mp4
3

Check and fix the scene that "drifted"

If the video generator changes the era or the architecture of a scene, replace the clip with the image itself using a slow zoom and assemble again.

./docflow estatica temas/egito.yaml --cenas 6
./docflow montar temas/egito.yaml
4

Preview the YouTube package without uploading

Title, description (with the footer for the project, the APIs used and INEMA.CLUB), tags and thumb. Nothing is uploaded in this step.

./docflow publicar temas/egito.yaml  # dry-run
5

Publish

After watching the video and approving the thumb, upload it. To fix the description of a video that is already live, use descricao --video.

./docflow publicar temas/egito.yaml --enviar
./docflow descricao temas/egito.yaml --video https://www.youtube.com/watch?v=...
6

Flow engine: the first login (once)

The robot opens a Chromium on the virtual display :99. You sign in to the Google account through VNC (localhost:5900) and accept the Flow terms. The first run calibrates the buttons, with a screenshot of each step in tmp/flow-*.png.

./docflow flow-login
./docflow gerar temas/egito.yaml --motor flow
Example

Ancient Egypt in one minute

6 scenes, 55 s, nei voice, Agnes engine. Published at youtube.com/watch?v=TsVY4UUc5gI.

The six images from the Egypt video, one per scene
The 6 images generated by the Agnes API, one per scene: the Nile, unification, Giza, Nubia, Abu Simbel and Alexandria.
Video thumb with the pyramids of Giza
The thumb that yt-pubx built from scene 3 (thumb_cena: 3).
Roadmap

What exists and what is coming

Version 0.2.0.

Done
Agnes engine, assembly and publishingExample video generated, checked and published; description with an automatic footer.
Next
Validate the Flow engineFirst login to the Google account and calibration of the Flow agent buttons.
Later
Voice and music through the browserAI Studio TTS and Flow Music as engines, through the same robot.
Planned
Local pathflux2-klein for images and image-with-motion for video, with no API at all.