MÓDULO 1.3

🧰 A stack sem API key

Três peças locais executam o princípio: agent-browser (Playwright) captura, HyperFrames renderiza HTML→MP4, e Kokoro narra com TTS local. Nada disso depende de chave de API — tudo roda na sua máquina. Aqui você também aprende a instalar e disparar a skill.

7
Tópicos
~30
Minutos
Básico
Nível
Prático
Tipo
STACK LOCAL · SEM API KEY 🌐 agent-browser Playwright captura 🎞️ HyperFrames HTML → MP4 render 🗣️ Kokoro pf_dora narração 💻 tudo roda na máquina · custo zero · privado 🔒 zero chaves de API
1

🌐 agent-browser (Playwright)

A primeira peça é a captura. O agent-browser dirige um navegador via Playwright: abre a URL num viewport fixo, navega o app, executa ações e tira os screenshots reais com suas bounding boxes.

Conceito Principal

É o agent-browser que produz a matéria-prima do vídeo: assets/shots/*.png (os estados) e o steps.json (caixas + captions + narração). Sem essa etapa, não há o que animar.

Dirigindo o agent-browser na mão
# o padrão de captura manual
agent-browser set viewport 1280 800
agent-browser open http://localhost:8000/
agent-browser snapshot -i # refs @e1, @e2…
agent-browser fill @e6 "texto"
agent-browser screenshot assets/shots/01-prompt.png
💡
O app-alvo precisa estar no ar

O agent-browser navega o app de verdade — então o localhost:8000 (ou a URL) precisa estar respondendo durante a captura. Os detalhes do capture.mjs e do actions.json ficam na Trilha 2.

2

🎞️ HyperFrames (HTML→MP4)

A segunda peça é o render. O HyperFrames converte uma página HTML animada em vídeo MP4, usando Chrome headless para gerar os frames e FFmpeg para montá-los.

Como o HTML vira MP4
📄
index.html

A página animada (moldura + shots + cursor + zoom + CTA), gerada pelo build-demo.mjs.

🖥️
Chrome headless

Renderiza frame a frame, de forma determinística, sem interface visível.

🎬
FFmpeg → MP4

Junta os frames e o áudio num MP4 16:9 final.

Validar e renderizar
# lint e inspect antes do render final
npx hyperframes lint # 0 erros
npx hyperframes inspect --samples 14 # 0 problemas
npx hyperframes ... --quality high --fps 30 --output renders/demo-16x9.mp4
💡
HTML→MP4 explica o determinismo

Como o vídeo nasce de HTML renderizado em Chrome headless, é natural que o render seja determinístico (sem rede) — exatamente o princípio do Módulo 1.2. Os detalhes do render ficam na Trilha 3.

3

🗣️ Kokoro TTS local

A terceira peça é a narração. O Kokoro gera a fala em PT-BR localmente — um WAV por passo (mais a CTA), com a voz pf_dora a --speed 0.98.

Conceito Principal

O Kokoro roda como modelo local (kokoro-onnx). A primeira execução baixa ~340MB; depois, cada vídeo gera os WAVs sem nenhum serviço externo. O gerador mede esses WAVs com ffprobe para sincronizar o timing automaticamente.

Boas práticas de narração
✓ Expandir para a fala
  • "512" → "quinhentos e doze"
  • "automationsai.net" → "inema ponto club"
  • Siglas e URLs soletradas/expandidas
  • 1 frase curta por passo
✗ O que evitar
  • Deixar números crus (lê errado)
  • Esperar atuação dramática (voz é boa, mas neutra)
  • Frases longas que estouram o passo
  • Inglês na narração (sempre PT-BR)
🔎
Você não escuta — o usuário valida

Como o áudio não dá para ouvir no fluxo de geração, o padrão é mostrar frames ao usuário e pedir que ele confirme a locução antes do render final.

4

🔒 Sem chave de API

As três peças rodam localmente. Captura, render e narração não dependem de nenhum serviço pago nem de chave de API — o que significa custo zero por vídeo e nenhum dado saindo da máquina.

Pré-requisitos (locais)

Node 22+ e FFmpeg; o Chrome do HyperFrames (npx hyperframes browser ensure); o TTS Kokoro (pip install kokoro-onnx soundfile); e o agent-browser no PATH. Tudo software local — nenhuma credencial de nuvem.

O que "sem API" garante
💸
Custo zero
Por vídeo
🔐
Privado
Nada sai da máquina
✈️
Offline-friendly
Após o setup
📦
Auto-contida
Skill traz fontes
💡
A skill é auto-contida

Ela traz as próprias fontes (Sora/Inter/JetBrains Mono em assets/fonts/) e a house style. Não depende de nenhum outro projeto, repositório ou serviço para funcionar.

5

📥 Instalar a skill

Como skill é só uma pasta, instalar é simples. Há três caminhos: descompactar o .zip, copiar a pasta, ou criar um symlink para desenvolver.

Três jeitos de instalar
# A) a partir do .zip (versionado na raiz do repo)
unzip video-demonstrativo.zip -d ~/.claude/skills/

# B) copiar a pasta (clone do repo)
cp -r .../video-demonstrativo ~/.claude/skills/

# C) symlink (dev — edição no repo reflete na hora)
ln -s "$(pwd)/video-demonstrativo" ~/.claude/skills/video-demonstrativo
📊 Qual caminho escolher
.zip
Você recebeu o pacote pronto e só quer usar.
copiar pasta
Clonou o repo e quer uma cópia estável instalada.
symlink
Vai editar a skill e quer ver as mudanças na hora.
💡
Reinicie a sessão depois

Em qualquer um dos três jeitos, reinicie a sessão para o Claude Code reconhecer a skill recém-instalada.

6

📂 Onde a skill vive

Skills moram em .claude/skills. A escolha do local define o escopo: global (qualquer projeto) ou de projeto (só naquele repositório).

🌐 Global
~/.claude/skills/video-demonstrativo/

Disponível em qualquer projeto. Ideal para uma skill que você usa o tempo todo, em vários repositórios.

📁 Projeto
<repo>/.claude/skills/video-demonstrativo/

Disponível só naquele projeto e versionável junto com o código — bom para times.

💡
Escolha o escopo certo

Skill pessoal de uso constante → global. Skill específica de um produto e compartilhada com o time → no .claude/skills do repositório.

7

⚡ Como disparar a skill

Instalada, a skill dispara por frases-gatilho do dia a dia. Conhecer essas frases garante que o demonstrativo (e não o explicativo) entre em ação.

Frases-gatilho
🗣️ Pedidos diretos
  • "vídeo de demonstração"
  • "demo do app / do sistema"
  • "walkthrough"
  • "mostrar passo a passo usando o app"
🔗 Ou simplesmente o link
  • Dar uma URL e pedir um vídeo do uso
  • Dar um localhost:8000
  • "gravar a tela do sistema"
  • "vídeo mostrando como usar X"
⚠️
Cuidado para não acionar o explicativo

"Faça um vídeo sobre X" (sem app) tende a acionar o video-explicativo. Para o demonstrativo, deixe claro que há um app a mostrar — ou dê o link.

💡
Dar o link é o gatilho mais forte

Como a entrada da skill é o link do app, oferecer a URL logo de início já comunica a intenção e ativa o fluxo certo.

📋 Resumo do Módulo 1.3

O que você aprendeu
  • agent-browser (Playwright) captura os shots + boxes
  • HyperFrames renderiza HTML→MP4 (Chrome headless + FFmpeg)
  • Kokoro TTS local narra (voz pf_dora, --speed 0.98)
  • Tudo roda na máquina — sem chave de API, custo zero
  • Instalar: zip, copiar pasta ou symlink; global vs projeto
  • Disparar: "demo", "walkthrough", ou dar o link
Próxima trilha
T2
📸 Captura
Com os fundamentos firmes, a Trilha 2 entra na captura na prática: actions.json, capture.mjs, steps.json, login, estados dinâmicos e o salvamento do resultado.
Ir para a Trilha 2 →