E1 · The docflow, read
5 minRun the "ler o docflow" block.
Done when: The output shows 0.8.0, documentario and slug: egito-antigo with duracao_total: 60.
Lesson 4 · 16 min
Two engines start from different places. docflow starts from a topic and delivers a short narrated documentary. refazvideo starts from a reference video and delivers your version in Portuguese, with your own thesis and script. In both, the file the agent writes is checked before any generation.
Start the lesson
Goal: read the topic of a docflow documentary and validate the visual script of a refazvideo before any generation.
Click each step. The ones marked as paid are left out of the practice.
docflow 0.8.0 (commit f1ed75e) and refazvideo 1.4.1 (commit e1f369e), read on October 19, 2026.
Version, styles and the theme of the model video. Local commands only.
E=${TMPDIR:-/tmp}/ensaio-fabrica/a4; rm -rf "$E"; mkdir -p "$E"; cd "$E"
git clone -q https://github.com/inematds/docflow.git && cd docflow && git checkout -q f1ed75e
./docflow --version
./docflow estilos | head -4
grep -E "^(slug|estilo|duracao_total|duracao_cena|formato|motor|voz):" temas/egito.yaml0.8.0
docflow 0.8.0 · estilos (use `estilo: <nome>` no tema)
documentario
Documentário narrado com cenas geradas por IA (imagem -> vídeo), ritmo calmo.
slug: egito-antigo
estilo: "realistic cinematic documentary, natural golden light, 35mm film look"
duracao_total: 60
duracao_cena: 10
formato: "16:9"
motor: agnes # flow | agnes | local
voz: nei # voz do inemavox (chatterbox): nei, nei2, bella...The engine and the voice live in the theme, not in the code. Note: voz: nei is Nei's own cloned voice, used with his consent. In your copy, swap it for a stock voice or your own, with a consent form (lesson 7). The total duration divided by the scene duration gives the number of scenes (60 ÷ 10 = 6).
In commit f1ed75e, docflow publicar calls yt-pubx as a dry run, but if there is no thumb.jpg in the video folder yet, yt-pubx asks Codex for the cover phrase and scene. A publishing dry run without a model is in lesson 8.
Ancient Egypt in one minute: the video this theme generated (55 s, 16:9, local narration).
The real example from the repository: the script in PT and the two-block visual script. Each screen enters on a cue (at) that has to be in the speech.
E=${TMPDIR:-/tmp}/ensaio-fabrica/a4; cd "$E"
git clone -q https://github.com/inematds/refazvideo.git && cd refazvideo && git checkout -q e1f369e
cat VERSION
X=exemplos/decisions-jev
python3 ferramentas/validar_visual.py $X/roteiro-pt.json $X/pt-b01.json $X/pt-b02.json; echo "saída: $?"1.4.1 aviso exemplos/decisions-jev/pt-b02.json cena 7: 'no visible damage' aparece 2x, casa com a 1ª OK 1 aviso(s) saída: 0
A warning doesn't fail the check: the cue appears twice in the speech and the screen enters on the first one. If that's not what you want, swap the cue for a unique excerpt.
Same validation with one cue swapped ("Faz poucas semanas" in place of "Há poucas semanas").
E=${TMPDIR:-/tmp}/ensaio-fabrica/a4; cd "$E/refazvideo"; X=exemplos/decisions-jev
sed '0,/"at": "Há poucas semanas"/s//"at": "Faz poucas semanas"/' $X/pt-b01.json > "$E/pt-b01-errado.json"
python3 ferramentas/validar_visual.py $X/roteiro-pt.json "$E/pt-b01-errado.json" $X/pt-b02.json; echo "saída: $?"ERRO /tmp/ensaio-fabrica/a4/pt-b01-errado.json cena 1: cue não está na fala: 'Faz poucas semanas' aviso exemplos/decisions-jev/pt-b02.json cena 7: 'no visible damage' aparece 2x, casa com a 1ª 1 erro(s) 1 aviso(s) saída: 1
Without the validator, that screen would never make it into the video, and you'd only find out after the avatar was generated.
Read from AGENTS.md at commit e1f369e. They apply before any production.
The reference video gives you the topic; the thesis, the script and the speech are yours, in natural Portuguese. Technical terms stay as they are.
The original presenter's face never appears: each screenshot is checked and covered with preparar_print.py --cobrir. Image rights and licensing of other people's material: course 2, lesson 7.
The avatar is only generated with the owner's "go ahead" recorded in APROVADO_HEYGEN, with date, blocks and minutes. Before that: script, storyboard and validator.
The engine, as it stands, does not credit the reference on its own: only if the request says so. The course's recommendation: give credit by default, and use a screenshot of someone else's video only with a license or permitted use.
A topic of your own and a cue of your own, checked.
Run the "ler o docflow" block.
Done when: The output shows 0.8.0, documentario and slug: egito-antigo with duracao_total: 60.
Run "validar o roteiro visual" and "deixa errada".
Done when: OK 1 aviso(s) with saída: 0, and then cue não está na fala: 'Faz poucas semanas', 1 erro(s) 1 aviso(s) and saída: 1.
Copy temas/egito.yaml to temas/meu-tema.yaml in the dry-run clone and change slug, theme, estilo, voice and the durations for a documentary of your own with 6 to 8 scenes. Do not run roteiro or gerar.
Done when: cd ${TMPDIR:-/tmp}/ensaio-fabrica/a4/docflow && python3 -c "import yaml; t=yaml.safe_load(open('temas/meu-tema.yaml')); print(t['slug'], t['duracao_total'] // t['duracao_cena'], 'cenas', 'voz própria' if t['voz'] != 'nei' else 'voz do Nei')" → your slug and a number from 6 to 8 followed by cenas voz própria.
The explanation appears after you answer.
Question 1 of 3
Which docflow commands call a model or a video generator?
Question 2 of 3
The refazvideo validator failed with "cue não está na fala". What does that mean?
Question 3 of 3
You want the documentary with no video generator at all. Which docflow path?
Pick an option. The explanation appears after you answer.