Instale o get-brolls 2.5.2 no Claude Code a partir do repositório https://github.com/engenheirodevideo/get-brolls (marketplace engenheirodevideo, plugin get-brolls). Depois rode /get-brolls-setup e me diga, em uma linha, se o doctor ficou sem pendências. Se algo faltar, explique o que é e me peça autorização antes de instalar.
Depois é só pedir: /get-brolls + o que você precisa + a pasta do vídeo.
No Claude Code, é só pedir
/get-brolls + o que você precisa + a pasta do vídeo. O agente roda os comandos por você e mostra a saída real.
Nada baixa sem duas coisas
Você aprovar o trecho e registrar os direitos de uso. Sem as duas, o corte final não sai.
Se perdeu? Pergunte
/get-brolls-status ou status no terminal diz onde você parou e já traz o próximo comando pronto.
DICIONÁRIO · DO VÍDEO
Palavra
O que é
Pensa assim
Projeto
A pasta do seu vídeo (--project)
A pasta do projeto no Premiere ou DaVinci
Beat
Um momento do vídeo que precisa de b-roll
Um marcador na timeline
Candidato
Um vídeo encontrado que pode servir
Um clipe no bin que ninguém usou
ID
O código do candidato (youtube:abc123)
O nome do clipe
Trecho
O pedaço que você quer, em segundos
O in e o out
DICIONÁRIO · DO CÓDIGO
Palavra
O que é
Terminal
A janela onde você digita comandos. Mac: app Terminal. Windows: PowerShell
Comando
Uma linha que você cola no terminal e aperta Enter
Flag
As opções que começam com --. --project diz qual projeto
JSON
O formato da resposta: texto organizado em "chave": valor
Script
Um arquivo com vários comandos em sequência, que roda sozinho
O caminho inteiro
8 passos, igual a um fluxo de edição
Ingest → seleção → aprovação do cliente → entrega. Role a página: cada passo que passa pelo meio da tela abre ao lado o que ele faz, os comandos e o que aparece na pasta. No celular, toque no passo.
GET B-ROLLS 2.5.2 / O CAMINHO EM 8 PASSOS↓
PASSO 1 ConferirA máquina está pronta?
PASSO 2 PlanejarRegras e plano por beat (a pré-produção)
PASSO 4 Prévia e StoryboardO offline: você vê o trecho em movimento
PASSO 5 · TRAVA 1 AprovarA aprovação do cliente
PASSO 6 · TRAVA 2 Direitos de usoDe quem é o material
PASSO 7 BaixarSó o trecho aprovado, conferido
PASSO 8 EntregarUma pasta por beat, pronta pro editor
EXTRA MemóriaAprende com você (extra)
Tutorial
Seu primeiro B-roll em 5 minutos
Usa a NASA, que não pede chave. Rode na pasta da skill, um por vez, na ordem. Troque ~/meu-video pela pasta do seu vídeo e <ID> pelo código que a busca devolver. Mantenha as aspas. No Windows, escreva python no lugar de python3.
O que faz: corta só o trecho aprovado, confere o arquivo e organiza.
Você recebe: a pasta entrega/, pronta para arrastar para o editor.
Pronto: o corte está em entrega/, com um ORIGEM.md dizendo de onde veio. Sem BRIEF, ele cai na pasta 00-sem-beat/.
Coleta organizada
O que vai onde, na pasta do vídeo
Em destaque, o que você abre no dia a dia. O resto é bastidor que a skill cuida.
Coleta organizada: o que vai onde
meu-video/←a pasta do seu vídeo
├── RULES.md←regras do projeto (init-rules)
├── BRIEF.md←o plano: um beat por trecho (init-brief)
├── entrega/←finais por beat: pegue aqui
│ ├── README.md←explica a pasta
│ └── 01-abertura-decolagem/←número do beat, id e alvo
│ ├── 01-abertura-decolagem.mp4←o corte
│ ├── contact-sheet.jpg←quadros com timecode
│ └── ORIGEM.md←fonte, autor, trecho, uso
├── output/playwright/←prints de página (browser-plan)
├── work/queue.json←a fila de lote (queue)
├── .getbrolls-sources/←originais de trabalho para a prévia
└── brolls/←tudo que a skill controla fica aqui
├── manifest.json←tipo, formato e procedência
├── references.json←referências e seus motivos
├── events.jsonl←trilha de eventos (só acrescenta)
├── diagnostics.jsonl←sucesso ou erro de cada comando
├── getbrolls.log←log de cada comando
├── candidates/←opções encontradas na pesquisa
├── previews/←GIF, pôster e contact sheet
├── clips/←cortes finais, conferidos pelo verify
├── reviews/←decisões salvas no Storyboard
├── credits.md←autores e condições de uso
└── review.html←o Storyboard da sua revisão
PARA EDITAR
Aponte o editor para entrega/
Uma pasta por beat, com o corte, a folha de quadros e o ORIGEM.md. Os arquivos são o mesmo que está em brolls/clips/ (hardlink) e nascem somente-leitura: copie antes de mexer, ou use GB_DELIVERY_COPY=1 para receber cópias.
BASTIDOR
brolls/ é da skill
Manifesto, candidatos, prévias, Storyboard, créditos e logs. Não precisa mexer. Nada daqui é apagado ou renomeado pela entrega.
QUANDO CADA PASTA NASCE
brolls/ com o primeiro comando que grava. entrega/ no deliver. work/ na primeira queue. output/playwright/ nos prints de página.
FORA DO PROJETO · ~/.getbrolls
A biblioteca entre projetos (learn, library) e o RULES.md global. Vale para todos os vídeos.
Referência · todos os comandos
Todos os comandos numa planilha
Uma linha por comando: a etapa, o comando, um exemplo pronto para copiar, o que faz e quando usar. O primeiro ícone é a etapa (o mesmo do caminho em 8 passos) e o segundo diz se o comando só lê ou se grava arquivos. Clique na linha para ver as variações e todas as flags. No terminal, rode na pasta da skill: python3 scripts/gb.py.
Etapa
Comando
Exemplo
O que faz
Quando usar
providers
python3 scripts/gb.py providers
Lista de onde dá para puxar vídeo e imagem: YouTube, Instagram, TikTok, Pexels, Pixabay, Commons, NASA e arquivo local.
Para saber quais fontes estão ligadas e quais pedem chave.
PASSO A PASSO E VARIAÇÕES
python3 scripts/gb.py providers
Lista as oito fontes, o transporte de cada uma e a chave de API que falta.
VOCÊ RECEBECada fonte, se está configurada e como o arquivo chega.
Todas as flags (0)
doctor
python3 scripts/gb.py doctor
Confere FFmpeg, Node, yt-dlp e o resto, e se a .venv bate com as versões fixadas.
Na primeira vez e sempre que algo der erro. Também depois de atualizar o código.
PASSO A PASSO E VARIAÇÕES
python3 scripts/gb.py doctor
Rápido, sem rede. Item "venv" em missing quer dizer: rode o instalador de novo.
python3 scripts/gb.py doctor --live
Faz buscas de teste de verdade nas fontes. Pode gastar cota das APIs com chave.
VOCÊ RECEBEO que está ok, o que falta (summary.missing) e o comando para consertar (summary.do).
Todas as flags (2)
--project
Aceito por uniformidade e ignorado: o diagnóstico é da instalação, não do projeto
--liveliga/desliga
Testar buscas reais/refresh; pode consumir quota de API
status
python3 scripts/gb.py status --project ~/meu-video
Mostra em que etapa o projeto está e já traz o próximo comando pronto.
Sempre que se perder. Só lê, não altera nada.
PASSO A PASSO E VARIAÇÕES
python3 scripts/gb.py status --project ~/meu-video
Candidatos, prévias, decisões, direitos, entregas e o próximo passo. Pode rodar durante um fetch longo.
VOCÊ RECEBEContagens por etapa, a frase do que falta e summary.do com o próximo passo.
Todas as flags (1)
--projectobrigatória
Pasta do projeto que guarda brolls/, fora da instalação da skill
Regrava um RULES.md que já existe. Trocar o formato invalida aprovações antigas.
python3 scripts/gb.py init-rules --mode user_declaration --responsible "Seu Nome" --declaration "Frase de responsabilidade com mais de vinte caracteres" --project ~/meu-video
Modo em que você declara os direitos de uso do projeto inteiro.
VOCÊ RECEBEO arquivo RULES.md na pasta do projeto.
Todas as flags (6)
--projectobrigatória
Pasta do projeto que guarda brolls/, fora da instalação da skill
--mode
Modo de direitos gravado no bloco JSON; padrão per_item_evidence
per_item_evidenceuser_declaration
--responsible
Nome de quem assume a responsabilidade no modo user_declaration
--declaration
Texto literal da declaração de responsabilidade do usuário
--format
Formato-alvo gravado em video_format; regravar exige --force
nativereelshorizontal
--forceliga/desliga
Regravar o RULES.md existente com as escolhas informadas
rules
python3 scripts/gb.py rules --project ~/meu-video
Mostra as regras que estão valendo agora neste projeto e de qual camada veio cada campo.
Antes de buscar, para lembrar as fontes preferidas e o formato.
PASSO A PASSO E VARIAÇÕES
python3 scripts/gb.py rules --project ~/meu-video
Ordem das camadas: ~/.getbrolls/RULES.md, depois GB_RULES_FILE, depois o RULES.md do projeto.
VOCÊ RECEBEAs regras em vigor e o campo sources.
Todas as flags (1)
--projectobrigatória
Pasta do projeto que guarda brolls/, fora da instalação da skill
python3 scripts/gb.py queue --action next --provider instagram --project ~/meu-video
Entrega o próximo link se já puder, ou diz quantos segundos esperar (wait_seconds).
python3 scripts/gb.py queue --action mark --id "<ID_DA_FILA>" --done --project ~/meu-video
Diz à fila como foi: --done, --failed --reason "..." ou --skipped --reason "...".
python3 scripts/gb.py queue --action status --project ~/meu-video
Quantos faltam, quantos foram e se a fila está em pausa.
VOCÊ RECEBEO próximo item da fila ou quantos segundos esperar.
Todas as flags (10)
--projectobrigatória
Pasta do projeto que guarda brolls/, fora da instalação da skill
--actionobrigatória
add: enfileirar URLs; next: próximo item ou tempo de espera; mark: registrar resultado; status: contagens e cooldown
addnextmarkstatus
--provider
Fonte das URLs em add; em next, limita a fila a essa fonte
instagramtiktokyoutube
urls
URLs públicas a enfileirar (add); repetidas são ignoradas
--urlrepetível
URL pública a enfileirar (add); pode repetir
--id
ID do item retornado por next (mark)
--doneliga/desliga
mark: item coletado com sucesso; zera o cooldown
--failedliga/desliga
mark: item falhou; motivo com 403/429, challenge/login, 'rate limit'/'too many requests' ou as mensagens de bloqueio da própria skill (sessão de acesso, IP bloqueado, limite de requisições) abre cooldown
Rota B: texto de termos padrão (youtube, nasa, commons, pexels ou pixabay). Confira a página mesmo assim.
python3 scripts/gb.py permit --candidate "<ID>" --declared-by "Seu Nome" --declaration-text "Assumo a responsabilidade pelo uso deste trecho" --project ~/meu-video
Rota C: declaração sua, com nome e uma frase de pelo menos 20 caracteres.
VOCÊ RECEBEO direito do trecho em permitted, com a fonte da informação.
Todas as flags (8)
--projectobrigatória
Pasta do projeto que guarda brolls/, fora da instalação da skill
--confirm-format-changeliga/desliga
Confirmar que aprovações já dadas podem ser invalidadas pela mudança de formato
--candidateobrigatória
ID do candidato retornado por search/resolve
--preset
Condições genéricas da fonte, sempre com o pedido de conferir a página original
commonsnasapexelspixabayyoutube
--evidence
Evidência real fornecida ou verificada
--declarationliga/desliga
Registrar declaração que o usuário preencheu em RULES.md
--declared-by
Nome de quem declarou a responsabilidade pelo uso, dito no chat
--declaration-text
Frase literal da declaração de responsabilidade, com 20 caracteres ou mais
Até 20 resultados por tipo. Desligue a biblioteca com GB_LIBRARY=off.
VOCÊ RECEBEPistas editoriais. Elas nunca aprovam nem permitem nada.
Todas as flags (3)
--projectobrigatória
Pasta do projeto que guarda brolls/, fora da instalação da skill
--searchobrigatória
Termo procurado entre assets, buscas e preferências guardadas
--limit
Máximo de resultados por tipo, 1–20 (padrão 5)
Etapas:ConferirPlanejarBuscarFilaPrévia e StoryboardAprovarDireitos de usoBaixarEntregarMemória
Tipo:Só lêGrava arquivos no projetoDepende da flagClique na linha para ver as variações e todas as flags.
Nada encontrado. Tente o nome de uma flag, como --candidate.
Recursos · 1 de 7
Preparar a máquina
Deixar a máquina pronta e saber, em uma linha, se está tudo certo.
Preparar a máquinanovo na 2.5.2
Doctor que confere a instalação inteira
Atualizou o código e esqueceu de rodar o instalador? O doctor agora percebe e diz o que fazer.
1
O que é
O doctor não confere só as ferramentas. Desde a 2.5.2 ele roda o Python da .venv que a CLI usa e compara cada pacote com requirements.txt e requirements-bootstrap.txt. Se a venv não existe, não roda ou tem versão diferente, aparece venv em summary.missing, com o que difere, e summary.do traz o comando do instalador.
É o relatório de mídia faltando antes de abrir o projeto: você descobre a pendência antes do render quebrar.
Vale quando o código foi atualizado por git pull ou /plugin update sem rodar o instalador de novo.
A saída ganha o campo venv, com status: ok, stale, absent, broken ou pinned.
Com GB_YTDLP_PATH fixado, a venv não é usada e não é cobrada (pinned).
resolved["yt-dlp"] mostra o yt-dlp que a CLI usa de fato: o fixado, depois o da .venv, só então o do PATH.
2
Diagrama
DOCTOR / A INSTALAÇÃO ESTÁ COMPLETA?↓
Código atualizadogit pull ou /plugin update
doctorRoda o Python da .venv da CLI
Compara os pacotesContra requirements.txt e requirements-bootstrap.txt
Bate com as versões?venv: ok, stale, absent, broken ou pinned
missing vazioPode seguir o trabalho
venv em missingsummary.do manda rodar o instalador de novo
3
Exemplo
DOCTOR COM A VENV AUSENTE
$ python3 scripts/gb.py doctor
{
"summary": {
"ok": ["curl", "ffmpeg", "ffprobe", "node", "yt-dlp"],
"missing": [
{"item": "venv",
"fix": "bash \"<pasta da skill>/scripts/install.sh\"",
"note": "A venv não existe: yt-dlp, EJS e o certifi corrigido não foram instalados"}
],
"do": "Rode o instalador de novo."
},
"venv": {"status": "absent", "differences": []}
}
4
Comandos
python3 scripts/gb.py doctor
Confere ferramentas, caminhos fixados e a venv. Pronto quando summary.missing vem vazio.
python3 scripts/gb.py doctor --live
Testa buscas reais nas fontes. Pode gastar cota das APIs com chave.
/get-brolls-setup
No chat: o Claude instala e roda o doctor por você.
5
Estrutura de pasta: o que vai onde
O que vai onde
get-brolls/←a pasta da skill instalada
├── .venv/←yt-dlp, EJS e o certifi corrigido
│ └── pip-install.log←por que o pip falhou, se falhou
├── requirements.txt←pacotes com sha256
├── requirements-bootstrap.txt←o pip fixado
└── scripts/
├── install.sh←instalador do macOS e Linux
└── install.ps1←instalador do Windows
Preparar a máquinanovo na 2.5.1
Instalação que recusa arquivo adulterado
Os instaladores conferem o sha256 de cada pacote e já vêm com o certifi corrigido.
1
O que é
Os instaladores primeiro instalam o pip fixado (26.2.2) de requirements-bootstrap.txt, com os sha256 que o PyPI publica. Depois instalam todo o resto com --require-hashes --only-binary :all:: arquivo com hash diferente é recusado e nenhum pacote é construído na sua máquina. O certifi vai para a 2026.10.19, que tira a raiz emSign ECC Root CA - G3 (advisory GHSA-6q48-6c7w-9gw2).
É conferir o hash do arquivo de mídia depois da cópia: se um bit mudou, o clipe não entra.
Quando o pip falha, a mensagem diz a causa: rede ou índice inacessível, arquivo que não confere com o sha256, ou Python sem roda compatível.
O registro do pip fica em .venv/pip-install.log.
Depois de atualizar o getbrolls, peça /get-brolls-setup de novo.
2
Diagrama
INSTALAÇÃO / DO PIP AO DOCTOR↓
pip 26.2.2Instalado primeiro, com sha256
Pacotes com hash--require-hashes --only-binary :all:
certifi 2026.10.19Sem a raiz emSign ECC Root CA - G3
doctorsummary.missing vazio
3
Exemplo
Você no Claude Code
/get-brolls-setup
O QUE O INSTALADOR USA (requirements.txt)
certifi==2026.10.19 \
--hash=sha256:<sha256 do arquivo> \
--hash=sha256:<sha256 do arquivo>
yt-dlp==2026.10.21 \
--hash=sha256:<sha256 do arquivo>
4
Comandos
/get-brolls-setup
No chat: instala tudo e responde em uma linha se está pronto.
python3 scripts/gb.py doctor
Confere o resultado depois da instalação.
5
Estrutura de pasta: o que vai onde
O que vai onde
get-brolls/←a pasta da skill
├── requirements.in←os pacotes que o projeto pede
├── requirements.txt←todos os arquivos, cada um com seu sha256
├── requirements-bootstrap.txt←pip 26.2.2 com sha256
├── .venv/←criada pelo instalador
│ └── pip-install.log←registro do pip
└── .tools/←Playwright CLI do npm
Preparar a máquinaestável
Comandos do Claude Code
Você conversa em português com /get-brolls. Os comandos curtos cuidam de cada etapa.
1
O que é
A skill /get-brolls conduz o pedido inteiro. Para etapas soltas existem quatro comandos curtos: /get-brolls-setup (instala e confere), /get-brolls-brief (entrevista e escreve o BRIEF.md), /get-brolls-review (monta o Storyboard, manda o link e importa as decisões) e /get-brolls-status (diz onde você parou). Um quinto, /get-brolls-eval, roda um teste cego do próprio fluxo. No Codex, a skill se chama $get-brolls.
São os atalhos do painel: um clique por etapa, sem decorar comando.
O agente roda os comandos do terminal por você e mostra a saída real.
Nada é baixado sem duas coisas: você aprovar o trecho e registrar os direitos de uso.
Silêncio não é aprovação: o agente para na revisão e espera a sua resposta.
2
Diagrama
CLAUDE CODE / OS COMANDOS CURTOS↓
/get-brolls-setupInstala e confere o ambiente
/get-brolls-briefAté sete perguntas e o BRIEF.md
/get-brollsBusca, prévia e shortlist
/get-brolls-reviewStoryboard, link e decisões
/get-brolls-statusOnde parou e o próximo passo
3
Exemplo
Você no Claude Code
/get-brolls preciso de vídeos de apoio pro meu Reel sobre foguetes. O projeto fica em ~/meu-video
Claude
Vou fazer até sete perguntas, uma por vez. Primeiro: o que o vídeo precisa provar para quem assiste?
4
Comandos
/get-brolls <seu pedido>
Chama a skill no Claude Code. Descreva os inserts e a pasta do projeto.
/get-brolls-setup
Instala as dependências e roda o doctor.
/get-brolls-brief
Entrevista e escreve o BRIEF.md do vídeo.
/get-brolls-review
Monta o Storyboard, manda o link e importa as decisões.
/get-brolls-status
Diz em que pé está a coleta e qual é o próximo passo.
5
Estrutura de pasta: o que vai onde
O que vai onde
get-brolls/←o plugin instalado
├── SKILL.md←as instruções da skill
├── commands/
│ ├── get-brolls-setup.md
│ ├── get-brolls-brief.md
│ ├── get-brolls-review.md
│ ├── get-brolls-status.md
│ └── get-brolls-eval.md
├── references/←entrevista, fontes, direitos e respostas
└── .claude-plugin/←plugin.json e marketplace.json
Recursos · 2 de 7
Planejar o vídeo
O padrão do canal e o plano do vídeo, antes de buscar qualquer coisa.
Planejar o vídeoestável
RULES.md: o padrão do seu canal
Formato, fontes preferidas e sites bloqueados, escritos uma vez e valendo para o projeto inteiro.
1
O que é
O RULES.md guarda as regras permanentes do canal: formato do vídeo (native, reels ou horizontal), a ordem das fontes para busca literal e ilustrativa, os domínios bloqueados e o modo de direitos. Elas valem em camadas: ~/.getbrolls/RULES.md para todos os projetos, depois o arquivo apontado por GB_RULES_FILE, depois o RULES.md do projeto. Listas se somam e, para valor único, vale o último.
É o preset de exportação do canal: todo vídeo nasce com as mesmas regras.
Trocar o formato nas regras atualiza o relatório e invalida aprovações anteriores.
rules mostra em sources de onde veio cada campo.
Responsabilidade e declaração nunca vêm da camada global: valem só no projeto do vídeo.
Mostra as regras em vigor e de qual camada vieram.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
├── RULES.md←as regras do projeto
├── BRIEF.md←o plano do vídeo
└── brolls/←o bastidor da skill
~/.getbrolls/←vale para todo projeto
└── RULES.md←regras globais (opcional)
Planejar o vídeoestável
BRIEF.md e a entrevista de sete perguntas
O plano do vídeo, beat a beat, escrito por você ou por uma entrevista curta com o Claude.
1
O que é
O BRIEF.md lista os beats do vídeo: o id de cada um, a fala exata e o que precisa aparecer na tela. É um arquivo Markdown com um bloco JSON dentro, e você edita só o bloco. Sem BRIEF, o /get-brolls-brief conduz uma entrevista de no máximo sete perguntas, uma por mensagem, e pára quando as perguntas 1, 3 e 7 foram respondidas. Dois "tanto faz" seguidos viram padrões, e o Claude mostra o que assumiu.
É o roteiro de b-roll: uma linha por momento do vídeo que precisa de imagem de apoio.
O id do beat (minúsculas, números e hífen) vira o --shot de toda a coleta.
O Claude nunca inventa fala, alvo, link ou nome de responsável.
Depois de editar na mão, rode brief --validate.
2
Diagrama
BRIEF / DA ENTREVISTA AOS COMANDOS PRONTOS↓
/get-brolls-briefAté sete perguntas, uma por vez
init-briefCria o BRIEF.md com um beat de exemplo
Você edita o JSONTítulo, objetivo e beats
brief --validateConfere se está preenchido certo
brief --beatO comando de busca pronto de cada beat
3
Exemplo
TRECHO DO BLOCO JSON DO BRIEF.md
{
"video": {
"title": "Foguetes em 60 segundos",
"objective": "Mostrar que a decolagem é só o começo",
"delivery": { "format": "reels" }
},
"beats": [{
"id": "abertura",
"narration": "Tudo começa na contagem regressiva",
"target": "decolagem da Artemis",
"queries": [],
"blocked_reason": null
}]
}
O QUE O brief DEVOLVE
$ python3 scripts/gb.py brief --project ~/meu-video
{"summary": {"line": "Brief de \"Foguetes em 60 segundos\": 1 beat, 0 com candidato e 1 sem."}}
No chat: faz a entrevista e escreve o BRIEF por você.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
├── BRIEF.md←um beat por trecho do vídeo
├── RULES.md←o padrão do canal
└── brolls/←o bastidor da skill
Recursos · 3 de 7
Buscar fontes
Achar a fonte literal do que a fala cita e registrar cada candidato sem baixar nada.
Buscar fontesestável
Busca em cinco fontes, com a fonte literal primeiro
YouTube, NASA, Commons, Pexels e Pixabay. Banco de stock só quando você pede.
1
O que é
O search pesquisa numa fonte e salva cada resultado como candidato do projeto. Nada é baixado. YouTube, Wikimedia Commons e NASA funcionam sem chave; Pexels e Pixabay usam a chave de cada banco. A regra editorial é fixa: procure o fato, a pessoa, o produto ou a tela que a narração cita. Stock entra somente quando você pede stock com todas as letras, nunca como preenchimento de um beat sem fonte.
É marcar candidatos num banco de imagens: nada foi puxado para a timeline.
--shot liga o candidato ao beat do BRIEF, e a entrega sai organizada por beat.
--dry-run lista o que a fonte devolveu sem gravar nada no projeto.
--media filtra por image, video ou any; só NASA e Commons têm os dois.
--intent é literal (a coisa exata citada) ou illustrative (ideia genérica).
2
Diagrama
BUSCA / DO BEAT AO CANDIDATO↓
brief --beatO comando de busca do beat
search --shotPesquisa e liga ao beat
Que tipo de fonte?Literal é o padrão
YouTube, NASA, CommonsSem chave de API
Pexels e PixabayChave do próprio banco
3
Exemplo
BUSCA REAL NA NASA, SEM GRAVAR NADA
$ python3 scripts/gb.py search --provider nasa --query "Artemis launch" --limit 2 --dry-run --project ~/meu-video
{
"summary": {
"line": "2 candidatos: Artemis I Launch Collage, Artemis I Launch (Press Site). Diagnóstico: nada foi registrado no projeto."
},
"items": [{ "id": "nasa:A1Launch", "provider": "nasa", "title": "Artemis I Launch Collage" }]
}
ILUSTRAÇÃO · CANDIDATOS DE UMA BUSCA, AINDA SEM BAIXAR NADA
c01
Orla ao amanhecer
c02
Ondas vistas de cima
c03
Cidade à noite
4
Comandos
python3 scripts/gb.py providers
Lista as fontes, se estão ligadas e quais pedem chave.
├── candidates/←um .json por candidato: id, autor, link e duração
├── manifest.json←candidato ligado ao beat
└── events.jsonl←mais uma linha por busca
Buscar fontesestável
Link, arquivo seu ou print de página
Já sabe qual vídeo quer? Registre pelo link ou pelo arquivo, com autor e origem anotados.
1
O que é
O resolve registra um candidato sem precisar buscar. Com --url aceita YouTube, Instagram, TikTok, Wikimedia Commons e NASA. Com --file registra um vídeo ou imagem que já está no seu computador, e você anota --creator e --source-url. Prints de notícia e de página entram como news_screenshot ou web_screenshot. O browser-plan planeja a captura pelo navegador autorizado.
É importar a mídia que o cliente mandou, com a ficha de origem preenchida.
Tipos de arquivo local: video, image, news_screenshot e web_screenshot. O padrão é inferido pela extensão.
Print de site precisa virar arquivo local verificável, com URL, manchete e data reais.
Não existe busca de imagens por API nem áudio isolado como entrega final.
2
Diagrama
RESOLVE / TRÊS CAMINHOS PARA O CANDIDATO↓
Onde está o material?Você já sabe qual quer
resolve --urlYouTube, Instagram, TikTok, Commons, NASA
resolve --fileVídeo ou imagem seu, com autor e origem
Planeja o print da página e mostra onde ele deve ser salvo.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
├── output/playwright/←prints de página, antes de importar
├── .getbrolls-sources/←o original de trabalho, para a prévia
└── brolls/
└── candidates/←o candidato com origem e autor
Buscar fontesestável
Instagram, TikTok e a fila com ritmo
Vários Reels de uma vez sem tomar bloqueio: a fila diz quando pegar o próximo.
1
O que é
TikTok e YouTube vêm por link, com yt-dlp e FFmpeg, sem chave. Instagram passa pelo navegador autorizado: o agente captura o vídeo e o áudio do mesmo Reel e o coletor incluído junta os dois canais. Não há busca global por palavra no Instagram ou no TikTok. Para lotes, a queue guarda os links e só entrega o próximo quando o intervalo e os tetos por hora e por dia permitem. A CLI nunca dorme: ela diz quanto esperar.
É a fila de render: os jobs saem um por vez, no ritmo que a plataforma aguenta.
Ritmo padrão: Instagram a cada 45 a 120 s, TikTok e YouTube a cada 15 a 40 s, no máximo 20 por hora e 60 por dia.
Falha com 403, 429, login ou "rate limit" pausa a fila de 30 minutos até 4 horas.
Você sempre usa a sua própria sessão do navegador. Nunca distribua perfis ou cookies.
2
Diagrama
FILA / UM LINK POR VEZ↓
queue addLinks entram na fila; repetido é ignorado
python3 scripts/gb.py queue --action next --provider instagram --project ~/meu-video
Pede o próximo item ou o tempo de espera.
python3 scripts/gb.py queue --action mark --id "<ID_DA_FILA>" --done --project ~/meu-video
Fecha o item: --done, --failed --reason ou --skipped --reason.
python3 scripts/gb.py queue --action status --project ~/meu-video
Mostra quantos faltam, quantos foram e se há pausa.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
├── work/
│ └── queue.json←a fila, com permissão restrita
└── brolls/
└── candidates/←o que cada item da fila virou
Buscar fontesestável
Raio-x do vídeo antes de escolher o trecho
Vídeo de uma hora, trecho de cinco segundos: o inspect acha em que minuto falam do assunto.
1
O que é
O inspect lê duração, capítulos e legendas da fonte e devolve janelas pontuadas pela fala ou pelo alvo que você passa em --query. Você escolhe --start e --end a partir delas, nunca de palpite. Sem pista nenhuma, o preview --scan varre o vídeo inteiro numa folha de quadros de baixa resolução.
É folhear o material bruto com a legenda ao lado, em vez de assistir tudo.
Escreva a --query no idioma do vídeo.
--max-windows define quantas janelas voltam (1 a 20, padrão 3).
Com --candidate, grava só a duração no candidato; com --url, não registra nada.
Varre o vídeo inteiro numa folha de quadros com o tempo de cada um.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
├── .getbrolls-sources/←o original de trabalho para analisar
└── brolls/
├── previews/←a folha do --scan, com o tempo de cada quadro
└── events.jsonl←a trilha do que foi analisado
Recursos · 4 de 7
Rever e decidir
Ver o trecho em movimento, decidir com nome e frase e registrar os direitos de uso.
Rever e decidirestável
Prévia em movimento antes de baixar
GIF, pôster e uma folha de quadros numerada: você vê o trecho se mexendo antes de decidir.
1
O que é
O preview gera, para o intervalo que você escolheu, um GIF, um pôster e um contact sheet: uma grade de quadros igualmente espaçados, com número e tempo em cada célula. Dá para avaliar ação, enquadramento e texto sobreposto sem baixar o vídeo em alta. A fala exata (--narration) e o motivo da escolha (--reason) vão junto e aparecem no Storyboard.
É o proxy da timeline: leve para decidir, o arquivo pesado só vem depois.
No máximo 10 segundos por prévia e um preview por chamada. Intervalo maior é recusado.
GIF padrão: 360 px, 8 fps, 128 cores, até 5 MB. Grande demais vira prévia estática, com aviso.
GB_PREVIEW_MODE=static usa só pôster e sequência de quadros.
Um pôster isolado, inclusive o de --reference-only, não prova movimento.
2
Diagrama
PRÉVIA / DO INTERVALO AOS QUADROS↓
Intervalo escolhido--start e --end, até 10 s
previewObtém a mídia de trabalho e corta o trecho
Três arquivosEm brolls/previews/
GIFMovimento do trecho
PôsterUm quadro de capa
Contact sheetQuadros numerados, com tempo
3
Exemplo
PRÉVIA REAL DE UM VÍDEO DA NASA
$ python3 scripts/gb.py preview --candidate "nasa:A1Launch:shot:abertura" --start 0 --end 4 --narration "Decolagem da Artemis" --reason "Plano aberto" --project ~/meu-video
{"summary": {"line": "Gerei a prévia de nasa:A1Launch:shot:abertura: estado awaiting_approval, aprovação pending."}}
ILUSTRAÇÃO · O CONTACT SHEET: QUADROS NUMERADOS, COM O TEMPO DE CADA UM
├── .getbrolls-sources/←o original de trabalho (cache privado)
└── brolls/
└── previews/
├── <id>-r1-<hash>.gif←o movimento do trecho
├── <id>-r1-<hash>-poster.jpg←o pôster
└── <id>-r1-<hash>-sheet.jpg←a folha de quadros
Rever e decidirestável
Storyboard: a aprovação pelo navegador
Uma página local com GIF, fala e fonte de cada trecho. Aprovar, pedir ajuste ou reprovar.
1
O que é
O review gera brolls/review.html: uma página para alternar entre imagem estática e GIF, ver fala, intervalo, motivo da escolha, autor e fonte, e decidir por trecho. O serve --background abre a página numa porta local e devolve o link. No fim, o botão Salvar decisões grava um JSON em brolls/reviews/, e o import-review --by traz tudo para o projeto com o nome de quem decidiu.
É mandar o corte de aprovação para o cliente, sem link de Drive: ele clica, você importa.
Em cada trecho: Aprovar, Pedir ajuste (com comentário; cabe "procure outro vídeo") ou Reprovar.
Abra pelo link que o serve devolveu e salve antes de fechar a aba. Abrir por file:// pode desligar o salvamento local.
Se o intervalo mudou depois da decisão, o trecho volta como stale_epoch ou signature_mismatch e a decisão antiga nunca é reaplicada.
Dá para imprimir ou salvar em PDF uma versão estática, com quadros, fontes e comentários.
2
Diagrama
STORYBOARD / DA PÁGINA À DECISÃO IMPORTADA↓
reviewMonta brolls/review.html
serve --backgroundAbre a página e devolve o link
Você decideAprovar, Pedir ajuste ou Reprovar
Salvar decisõesGrava o JSON em brolls/reviews/
import-review --byTraz as decisões, com o seu nome
serve --stopFecha a página
3
Exemplo
DO LINK À DECISÃO
$ python3 scripts/gb.py review --project ~/meu-video
$ python3 scripts/gb.py serve --background --project ~/meu-video
# abra o link que apareceu em "urls": http://127.0.0.1:8767/review.html
# clique em Aprovar e depois em Salvar decisões
$ python3 scripts/gb.py import-review --by "Seu nome" --project ~/meu-video
$ python3 scripts/gb.py serve --stop --project ~/meu-video
├── review.html←o Storyboard, com CSS e JavaScript dentro
├── previews/←os GIFs e quadros que a página mostra
├── reviews/←as decisões que você salvou, em JSON
└── .serve.pid←o servidor em segundo plano
Rever e decidirestável
Aprovação com nome e frase, e a rejeição com motivo
Primeira trava: sem uma pessoa aprovando, nada é baixado. Fica gravado quem e o que ela disse.
1
O que é
A aprovação vem sempre de uma pessoa: pelo Storyboard (import-review) ou por fala explícita no chat, registrada com approve --by NOME --channel chat --statement "frase". O Claude mostra o que cada folha de quadros contém e pergunta "aprova todos, ou quais?"; aprova exatamente o que você viu. Mudou o intervalo ou o contexto, a aprovação cai. O reject descarta o candidato e guarda o porquê.
É o OK do cliente por escrito, com nome e data, antes do render final.
No canal chat, --statement é obrigatório. Silêncio não é aprovação e o agente não se autoaprova.
--all só vale quando todos os candidatos com prévia foram mostrados.
reject zera o output do candidato: nada fica rejeitado e entregue ao mesmo tempo. Nada é apagado de brolls/.
approve remove a rejeição antiga do candidato.
2
Diagrama
APROVAÇÃO / A PRIMEIRA TRAVA↓
Folhas de quadrosO Claude descreve o que cada uma mostra
"Aprova todos, ou quais?"Você responde com a sua voz
Você aprovou?Nome e frase exata ficam gravados
approveCandidato em approved
reject --reasonCandidato rejeitado, com o motivo
3
Exemplo
APROVAÇÃO PELO CHAT
$ python3 scripts/gb.py approve --candidate "nasa:A1Launch:shot:abertura" --by "Bruno Moreira" --channel chat --statement "Pode usar esse trecho" --project ~/meu-video
{"summary": {"line": "Registrei a aprovação humana de nasa:A1Launch:shot:abertura: estado approved, por Bruno Moreira."}}
Descarta e guarda o motivo. Repita --candidate para vários.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
└── brolls/
├── manifest.json←estado approved ou rejected, com nome e canal
├── candidates/←a rejeição, com o motivo
└── getbrolls.log←a trilha de aprovação, sem nomes nem frases
Rever e decidirestável
Direitos de uso: três rotas, você escolhe uma
Segunda trava: registra de quem é o material. A ferramenta só registra, quem responde pelo uso é você.
1
O que é
O permit grava as condições de uso do trecho antes do corte. São três rotas: --evidence, com as condições reais que você leu na página da fonte; --preset, com o texto de termos padrão da fonte (youtube, nasa, commons, pexels, pixabay), sempre com o pedido de conferir a página; e --declared-by com --declaration-text, a sua declaração de responsabilidade, com nome real e frase de pelo menos 20 caracteres. Não invente licença.
É guardar a licença do arquivo junto do arquivo, antes de usar na edição.
O modo do projeto vem do RULES.md: per_item_evidence (um por um) ou user_declaration (a declaração cobre o projeto).
Responsabilidade e declaração valem só no projeto em que o vídeo é feito.
O permit registra o que foi dito e de onde veio. Ele não verifica a licença sozinho.
2
Diagrama
DIREITOS / A SEGUNDA TRAVA↓
Qual rota?Escolha uma das três
--evidenceO que você leu na página da fonte
--presetTermos padrão da fonte
--declared-bySua declaração de responsabilidade
Direitos permittedGravados no candidato e no credits.md
3
Exemplo
PRESET DA NASA
$ python3 scripts/gb.py permit --candidate "nasa:A1Launch:shot:abertura" --preset nasa --project ~/meu-video
{"summary": {"line": "Registrei as condições de uso de nasa:A1Launch:shot:abertura: direitos permitted."}}
4
Comandos
python3 scripts/gb.py permit --candidate "<ID>" --evidence "Licença Creative Commons lida na página do vídeo" --project ~/meu-video
Rota A. Condições reais da página.
python3 scripts/gb.py permit --candidate "<ID>" --preset nasa --project ~/meu-video
Rota B. Termos padrão: youtube, nasa, commons, pexels ou pixabay.
python3 scripts/gb.py permit --candidate "<ID>" --declared-by "Seu Nome" --declaration-text "Assumo a responsabilidade pelo uso deste trecho" --project ~/meu-video
Rota C. Sua declaração, com nome e frase de 20 caracteres ou mais.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
└── brolls/
├── manifest.json←as condições de uso do trecho
└── credits.md←autores, licenças e decisões
Recursos · 5 de 7
Receber os clipes
Baixar só o que passou pelas duas travas e receber tudo organizado por beat.
Receber os clipesestável
Baixar só o trecho aprovado e conferir
O corte final nasce depois das duas travas, em 1080p quando a fonte tem, e o verify confere cada arquivo.
1
O que é
O fetch baixa e corta só o intervalo aprovado e permitido, em 1080p quando a fonte oferece, e salva em brolls/clips/. Se faltar aprovação ou direitos, ele recusa. O verify compara o sha256 de cada arquivo e tenta decodificá-lo. Arquivo alterado, sumido ou que não abre volta a approved e deixa de ir para a entrega.
É o export final conferido: o arquivo que sai bate com o que foi aprovado.
A conferência passa por todos os clipes antes de falhar, para que um segundo arquivo alterado não continue marcado como verificado.
Uma verify limpa depois de restaurar o arquivo volta a marcar como verificado.
Imagens aprovadas são copiadas sem alteração; prints saem como PNG ou JPG com a origem registrada.
2
Diagrama
BAIXAR / SÓ DEPOIS DAS DUAS TRAVAS↓
Aprovado e permitidoAs duas travas passaram
fetchCorta só o intervalo aprovado
verifysha256 e decodificação
verifiedPronto para a entrega
Volta a approvedFica de fora da entrega
3
Exemplo
FETCH E VERIFY
$ python3 scripts/gb.py fetch --candidate "nasa:A1Launch:shot:abertura" --project ~/meu-video
{"summary": {"line": "Coletei o corte final de nasa:A1Launch:shot:abertura em clips/9a461ae400cbf3b9-r1.mp4."}}
$ python3 scripts/gb.py verify --project ~/meu-video
{"verified": true, "count": 1, "summary": {"line": "Verifiquei 1 arquivo coletado: íntegro e decodificável."}}
Confere integridade e decodificação de tudo que foi coletado.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
└── brolls/
├── clips/←os cortes finais
│ └── <id>-r1.mp4←o intervalo aprovado, com sha256 conferido
└── credits.md←origem, autor e decisão de cada corte
Receber os clipesestável
Entrega por beat, com a origem de cada clipe
Uma pasta por beat com o corte, a folha de quadros e um ORIGEM.md. É daqui que você arrasta para o editor.
1
O que é
O deliver organiza o que já foi coletado em entrega/, uma pasta por beat, na ordem do BRIEF (NN-<beat>-<alvo>). Cada pasta leva o .mp4, o contact-sheet.jpg e o ORIGEM.md: fonte, autor, intervalo, direitos, quem aprovou e o sha256. Um README.md na raiz traz a tabela de tudo. Sem BRIEF, tudo vai para 00-sem-beat/. A pasta é derivada: o que vale é brolls/.
É o bin organizado por cena, com a ficha de cada clipe ao lado.
Os arquivos entram por hardlink: não ocupam disco duas vezes, mas editar em entrega/ é editar o original. Por isso nascem somente-leitura.
GB_DELIVERY_COPY=1 entrega cópias independentes e editáveis.
Rodar de novo é seguro. O que você criou dentro de entrega/ é preservado, e arquivo entregue que você editou nunca é sobrescrito.
Clipe rejeitado ou com integridade reprovada não é entregue e aparece em skipped, com o motivo.
2
Diagrama
ENTREGA / DOS CLIPES CONFERIDOS À PASTA↓
Clipes verifiedEm brolls/clips/
deliverUma pasta por beat
O corte .mp4Hardlink do original
contact-sheet.jpgQuadros com timecode
ORIGEM.mdFonte, autor, trecho e uso
Você arrasta para o editorPremiere, DaVinci, Final Cut, CapCut
3
Exemplo
TRECHO DO ORIGEM.md GERADO
# Origem de 01-abertura-decolagem-da-artemis.mp4
- Candidato: `nasa:A1Launch:shot:abertura`
- Fonte: https://images.nasa.gov/details/A1Launch
- Autor: Segovia
- Trecho usado: 0s → 4s
- Direitos: permitted
- Aprovado por: Bruno Moreira (chat)
- sha256 do arquivo coletado: `0fe40b88…e63bfd`
- Original canônico: `brolls/clips/9a461ae400cbf3b9-r1.mp4`
│ └── ORIGEM.md←fonte, autor, trecho, direitos e sha256
└── brolls/←o original continua aqui
Recursos · 6 de 7
Memória e estado
Saber onde você parou e lembrar o que funcionou em cada vídeo.
Memória e estadoestável
Onde estou: o status que diz o próximo passo
Perdeu o fio? Um comando só lê o projeto e já entrega o próximo comando pronto.
1
O que é
O status responde "onde estamos?" sem alterar nada: candidatos encontrados, prévias geradas, decisões pendentes, aprovadas e rejeitadas, itens com direitos registrados, entregues e verificados. Em summary.do vem o próximo passo: o command pronto, o why e blocking_human, que fica true quando depende de você. summary.do.for_human é a frase pronta para dizer à pessoa.
É o painel de status do render: o que terminou, o que está na fila e o que travou.
Só lê. Pode rodar enquanto um fetch longo está em andamento, sem esperar.
Num projeto que não existe, responde que não encontrou e não cria nada.
No chat, /get-brolls-status repassa a frase do for_human sem parafrasear.
2
Diagrama
STATUS / DA PERGUNTA AO PRÓXIMO PASSO↓
Onde parei?Qualquer hora, sem mudar nada
statusLê manifesto, candidatos e decisões
summary.lineContagens por etapa
summary.docommand, why e blocking_human
3
Exemplo
STATUS DE UM PROJETO RECÉM-CRIADO
$ python3 scripts/gb.py status --project ~/meu-video
{"summary": {
"line": "Resumi o projeto: 0 candidatos encontrados, 0 prévias geradas, 0 decisões pendentes, 0 decisões aprovadas, 0 decisões rejeitadas, 0 itens com permit registrado, 0 itens entregues, 0 itens verificados.",
"do": {
"step": "brief-search",
"for_human": "O beat \"abertura\" ainda está sem material: vou buscar por ele agora e te mostrar as opções.",
"blocking_human": false
}}}
4
Comandos
python3 scripts/gb.py status --project ~/meu-video
Resume o projeto por etapa e traz o próximo comando.
/get-brolls-status
No chat: diz em que pé está e qual é o próximo passo.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
└── brolls/←só leitura: o status não grava aqui
├── manifest.json←candidatos e estados
└── events.jsonl←a trilha de eventos
Memória e estadoestável
Memória do projeto: o que funcionou e o que não
Guarde por que um trecho entrou ou saiu. Meses depois, o motivo ainda está lá.
1
O que é
O remember registra, no projeto, uma referência aprovada ou rejeitada com o motivo real e o nome de quem decidiu. O references consulta tudo que foi guardado. Os exemplos orientam a próxima busca, mas nunca transferem aprovação ou licença para outro trecho.
É a nota de montagem de cada clipe: por que ficou, por que saiu.
--decision é approved ou rejected, e --reason é obrigatório.
A memória é por projeto. Para ver a de outro projeto, aponte --project para ele, com a autorização da pessoa.
└── references.json←cada referência com a decisão e o motivo
Memória e estadoestável
Biblioteca entre projetos
Buscas que renderam, fontes que falharam e gostos seus, lembrados no próximo vídeo.
1
O que é
O learn guarda aprendizados que valem para todos os seus projetos: uma busca que rendeu ou não (--outcome hit ou miss), uma preferência editorial sua e anotações livres. O library consulta isso antes de você sair buscando. É uma pista editorial e nada além disso: nenhuma resposta da biblioteca aprova ou permite coisa alguma.
É a sua coleção de presets: o que funcionou no último vídeo já está à mão no próximo.
Fica em ~/.getbrolls/library. Desligue com GB_LIBRARY=off.
A biblioteca mistura projetos: não cole o texto dela numa conversa com cliente.
--from-candidate guarda um trecho já memorizado com remember, como ponteiro.
2
Diagrama
BIBLIOTECA / O QUE VALE PARA TODOS OS PROJETOS↓
learnBusca, gosto ou nota
~/.getbrolls/libraryEntre projetos, só pista editorial
O que fica registrado, o que nunca entra no registro e o que o coletor recusa.
Registros e segurançaestável
Log por projeto, sem dado pessoal
Cada comando deixa uma linha em brolls/getbrolls.log. Quando algo estranho acontece, é o primeiro lugar a olhar.
1
O que é
Cada projeto ganha brolls/getbrolls.log: uma linha chave=valor por evento, com início e fim de cada comando, cada passo da trilha, cada chamada de ffmpeg, ffprobe, yt-dlp e curl com duração e código de saída, e cada pedido de rede. O arquivo tem permissão restrita e gira a cada cerca de 1 MB, guardando 3 cópias. Nunca entram no log: nome de quem aprovou, frase de aprovação, motivo de rejeição, evidência de direitos, texto de busca, títulos, canais, URLs (só o host) e linha de comando.
É o log do render: mostra o que rodou e quanto demorou, sem expor o seu conteúdo.
GB_LOG_LEVEL aceita DEBUG, INFO (padrão), WARNING, ERROR e off.
GB_LOG_STDERR=1 espelha o log no terminal, para depurar.
Comando de leitura não cria o arquivo, e falha de log nunca derruba um comando.
Erros trazem app_log com o caminho do log, e brolls/diagnostics.jsonl guarda o detalhe de cada erro.
2
Diagrama
LOG / O QUE ENTRA E O QUE FICA DE FORA↓
Cada comandoInício, fim e código de saída
getbrolls.logUma linha chave=valor por evento
EntraComando, passo, ferramenta, duração, host
Fica de foraNomes, frases, evidências, buscas, URLs inteiras
3
Exemplo
COMO PROCURAR UM ERRO
$ tail -n 20 ~/meu-video/brolls/getbrolls.log
4
Comandos
tail -n 20 ~/meu-video/brolls/getbrolls.log
Mostra as últimas linhas do log do projeto.
python3 scripts/gb.py status --project ~/meu-video
Resume o projeto e aponta o log em log.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
└── brolls/
├── getbrolls.log←o log do projeto, com permissão restrita
├── diagnostics.jsonl←o detalhe de cada erro, sem chaves
└── events.jsonl←a trilha de eventos, só acrescenta
Registros e segurançaestável
Storyboard local protegido
A página roda só no seu computador e entrega só o que a revisão precisa.
1
O que é
O serve sobe o Storyboard em 127.0.0.1, só no seu computador. Toda resposta leva cabeçalhos que impedem outra página de embutir a revisão para induzir um clique de aprovação. O servidor entrega somente review.html, previews/ e clips/: o manifesto, o diagnóstico, as decisões e a listagem de pastas respondem 404. Um .. codificado na URL não sai de previews/ nem de clips/.
É um link de revisão que só abre a janela certa, sem deixar a porta dos fundos aberta.
A página não pede login: ela serve a projetos locais confiáveis. Compartilhe só o necessário à revisão.
O processo em segundo plano não herda as chaves de provedor.
.serve.pid e .serve.log nascem com permissão restrita.
2
Diagrama
STORYBOARD / O QUE O SERVIDOR ENTREGA↓
serve em 127.0.0.1Só no seu computador
O pedido é permitido?review.html, previews/ ou clips/
Entrega o arquivoCom cabeçalhos contra embutir a página
Responde 404manifest.json, reviews/, listagens de pasta
3
Exemplo
SERVIDOR EM SEGUNDO PLANO
$ python3 scripts/gb.py serve --background --project ~/meu-video
# o link vem em "urls": http://127.0.0.1:8767/review.html
O coletor só fala com endereços públicos e HTTPS, e respeita o ritmo de cada plataforma.
1
O que é
O coletor aceita somente URLs públicas HTTPS sem credenciais, recusa nomes que resolvem para redes locais, fixa o download no endereço que acabou de validar e não segue redirecionamentos. Erros de yt-dlp, curl, ffmpeg e HTTP trazem o código e as últimas linhas do erro, sempre sem URL assinada, chave ou token.
É o firewall do importador: só entra mídia de endereço público, e nada sai do seu computador por engano.
Respeita Retry-After e faz pausas do yt-dlp entre downloads.
Seus projetos e originais ficam locais. Só a pesquisa e o download falam com as fontes que você escolheu.
Guarde chaves de API, sessão do navegador e URLs assinadas em ambiente privado, fora da pasta da skill.
2
Diagrama
REDE / O QUE O COLETOR ACEITA↓
URL do materialDo resolve, da busca ou da fila
HTTPS público, sem credenciais?E não resolve para rede local
Download no endereço validadoSem seguir redirecionamentos
Confere curl, yt-dlp, FFmpeg e o resto das ferramentas de download.
python3 scripts/gb.py queue --action status --project ~/meu-video
Mostra o ritmo da fila e se há pausa.
5
Estrutura de pasta: o que vai onde
O que vai onde
meu-video/←a pasta do vídeo
├── .getbrolls-sources/←cache privado, só você lê
└── brolls/
└── diagnostics.jsonl←erro com stderr já redigido
Novidades
O que mudou da 2.4 até a 2.5.2
A 2.5.2 é a versão estável atual. Ela fecha uma linha de endurecimento: instalação conferida, aprovação firme, log por projeto e Storyboard protegido.
2.5.223 OUT 2026
Segurança e instalação
doctor detecta instalação incompleta. Código atualizado sem rodar o instalador, ou instalador que parou no meio, agora aparece como venv em summary.missing, com o comando para consertar.
resolved["yt-dlp"] passa a ser o yt-dlp que a CLI usa de fato: o fixado, depois o da .venv, só então o do PATH.
Quando o pip falha, a mensagem diz a causa (rede, hash que não confere ou Python sem roda compatível). O registro fica em .venv/pip-install.log.
2.5.122 OUT 2026
Dependências com hash
certifi 2026.10.19 tira a raiz emSign ECC Root CA - G3 (GHSA-6q48-6c7w-9gw2).
Os instaladores instalam o pip 26.2.2 primeiro e todos os pacotes com --require-hashes --only-binary :all:.
Dependências atualizadas como um conjunto revisado: yt-dlp 2026.10.21, websockets, brotli e outras.
Novo docs/MANUAL.md: manual e tutorial em português, do zero à pasta entrega/.
2.5.019 SET 2026
Log, aprovação firme e Storyboard protegido
Log por projeto em brolls/getbrolls.log, sem nomes, frases de aprovação nem URLs inteiras.
reject zera o output; verify confere todos os clipes e desmarca o que foi alterado; deliver pula clipe rejeitado ou reprovado e lista em skipped.
deliver recusa rodar quando entrega/ é link simbólico e confina toda remoção à pasta real.
Storyboard local só entrega review.html, previews/ e clips/, com cabeçalhos contra embutir a página.
~/.getbrolls/RULES.md ilegível passa a parar o comando, em vez de ser ignorado.
2.4.017 SET 2026
A base do fluxo atual
Entrevista de intake e BRIEF.md por projeto (init-brief, brief).
Aprovação pelo chat, biblioteca entre projetos (learn, library), análise da fonte antes de coletar (inspect, preview --scan).
Pasta entrega/ por beat e Storyboard que salva as decisões dentro do projeto.
Como ler a resposta
Todo comando responde em JSON
Pensa como o relatório de render: um texto organizado que diz o que aconteceu. Três campos resolvem quase tudo.
summary.line
Uma frase em português dizendo o que acabou de acontecer. Se for ler uma coisa só, leia essa.
{"summary": {"line": "Coletei o corte final de nasa:abc em clips/abc.mp4."}}
summary.do (no status)
command é o próximo comando pronto, why diz o motivo, for_human é a frase para dizer à pessoa e blocking_human fica true quando o próximo passo depende de você.
deu erro
Sai em JSON, com error (o que houve) e error_code (o tipo). Nunca sai traceback cru: o detalhe fica em brolls/diagnostics.jsonl.
CÓDIGO DE SAÍDA · O NÚMERO QUE O TERMINAL GUARDA
Código
Significa
0
Deu certo
2
Erro de uso ou de dados: um ID errado, falta aprovação, link fora do ar
3
Erro interno (bug). Abra uma issue com o brolls/diagnostics.jsonl
Os arquivos que você edita
BRIEF.md e RULES.md guardam as suas escolhas
Os dois são Markdown com um bloco JSON dentro. Edite só o bloco JSON. Depois de editar o BRIEF, rode brief --validate.
BRIEF.md · O PLANO DE B-ROLLS DESTE VÍDEO
{
"version": 1,
"video": {
"title": "Nome do vídeo",
"objective": "O que o vídeo precisa provar",
"delivery": { "format": "reels" }
},
"rights": { "posture": "per_item_evidence",
"stock_allowed": false },
"defaults": {
"allowed_sources": ["youtube", "commons", "nasa"],
"intent": "literal", "duration_hint_s": 4
},
"beats": [{
"id": "abertura",
"narration": "A fala exata deste trecho",
"target": "O que precisa aparecer na tela",
"queries": [], "blocked_reason": null
}]
}
video.title · objective
Obrigatórios. Nome e o que o vídeo precisa mostrar
delivery.format
reels (9:16), horizontal (16:9) ou native
rights.posture
per_item_evidence (um por um) ou user_declaration (você assume tudo)
stock_allowed
true libera Pexels e Pixabay. Padrão: fonte real primeiro
intent
literal (a coisa exata) ou illustrative (ideia genérica)
beats[].id
Minúsculas, números e hífen. Vira o --shot
beats[].target
Obrigatório. O que precisa aparecer na tela
beats[].queries
Buscas que já funcionaram. A primeira vira a sugerida
blocked_reason
O beat depende de algo que só você tem. Não é buscado até você apagar
A ordem das fontes para busca literal e ilustrativa
blocked_domains
Sites que nunca podem entrar
copyright.mode
per_item_evidence ou user_declaration
Regra para todos os projetos: crie ~/.getbrolls/RULES.md. Ordem: global, depois GB_RULES_FILE, depois o RULES do projeto. Listas se somam; valor único, o último vence.
.ENV · CONFIGURAÇÕES DA FERRAMENTA (OPCIONAL)
# Chaves dos bancos de imagem (grátis nos sites deles)
PEXELS_API_KEY=sua_chave
PIXABAY_API_KEY=sua_chave
# Prévia: gif (padrão) ou static (só imagens paradas)
GB_PREVIEW_MODE=gif
# Largura do GIF em pixels (160 a 720; padrão 360)
GB_GIF_WIDTH=480
# Duração máxima de uma prévia em segundos (1 a 30; padrão 10)
GB_PREVIEW_MAX_SECONDS=10
# Entrega com cópias independentes (sem isso, hardlink somente-leitura)
GB_DELIVERY_COPY=1
# Detalhe do brolls/getbrolls.log: DEBUG, INFO (padrão), WARNING, ERROR, off
GB_LOG_LEVEL=INFO
Copie o .env.example.pt-BR da pasta da skill para .env e mude só o que quiser. O ambiente do processo vence o arquivo. A lista completa, com faixas e padrões, está no próprio exemplo.
Automação
Encadear comandos num script
Como toda resposta é JSON, dá para ligar um comando no outro. É como uma action do Photoshop: você monta uma vez e roda quando quiser. As receitas usam o jq, um programa que lê JSON no terminal.
Pegar o ID sem copiar na mão
Busca e guarda o ID do primeiro resultado numa variável, com o jq.
A aprovação e os direitos. approve e permit registram uma decisão sua. Um script que aprova tudo sozinho derruba justamente a trava que protege o seu vídeo.
Socorro
Deu erro?
Aconteceu
Faça
python3 não existe
No Windows, use python.
Falta alguma ferramenta
Rode doctor. Se aparecer venv, peça /get-brolls-setup de novo.
fetch recusou
Faltou aprovar (passo 5) ou registrar os direitos (passo 6).
Busca vazia
Menos palavras, no idioma do vídeo.
"Trecho grande demais"
A prévia aceita no máximo 10 segundos.
Salvei no Storyboard e nada
Rode import-review. Abra a página pelo link do serve, não pelo arquivo.
Decisão pulada com stale_epoch
O intervalo mudou depois da decisão. Gere a prévia e o Storyboard de novo e decida outra vez.
Não sei onde parei
Rode status.
Erro estranho
Olhe as últimas linhas de brolls/getbrolls.log.
Instalação completa
Instalação
A instalação é um prompt só, o da seção Comece aqui. O Claude instala o plugin, roda o /get-brolls-setup e confere com o doctor. Funciona no macOS e no Windows; Linux é plataforma secundária.
O MESMO PROMPT, PARA COPIAR DE NOVO
Instale o get-brolls 2.5.2 no Claude Code a partir do repositório https://github.com/engenheirodevideo/get-brolls (marketplace engenheirodevideo, plugin get-brolls). Depois rode /get-brolls-setup e me diga, em uma linha, se o doctor ficou sem pendências. Se algo faltar, explique o que é e me peça autorização antes de instalar.
sem prévia; sem drawtext, a folha de quadros sai sem número e tempo
Node 22+ com npm e npx
Playwright CLI e runtime EJS do yt-dlp
YouTube e Instagram falham
curl
download dos pares de stream do Instagram
Instagram falha
Git
clonar e atualizar
instalação manual
yt-dlp e Playwright CLI
o instalador coloca na pasta da skill
YouTube, TikTok e Instagram falham
Git é opcional. Chave de API do YouTube não é necessária. Pexels e Pixabay usam apenas as suas próprias chaves opcionais.
Glossário
As palavras que você vai encontrar
Busque a palavra ou role a lista. As palavras básicas de terminal (comando, flag, JSON) estão no dicionário de Comece aqui.
Palavra
O que é
Aprovação
A decisão de uma pessoa sobre um trecho: Aprovar, Pedir ajuste ou Reprovar. Primeira trava: sem ela, nada baixa.É o OK do cliente por escrito.
Beat
Um momento do vídeo que precisa de b-roll, com id, fala e alvo no BRIEF.md.É um marcador na timeline.
BRIEF.md
O plano deste vídeo, beat a beat. Markdown com um bloco JSON dentro.
Candidato
Um vídeo ou imagem encontrado que pode servir. Entra no projeto sem ser baixado.É um clipe no bin que ninguém usou.
Contact sheet
A folha de quadros do trecho, numerada e com tempo em cada célula.É a folha de contato do fotógrafo.
Direitos de uso
As condições em que o material pode ser usado. Segunda trava, registrada pelo permit.
entrega/
A pasta derivada, uma por beat, com o corte, a folha de quadros e o ORIGEM.md.É o export final organizado por cena.
Fonte literal
O material real do fato, da pessoa, do produto ou da tela que a fala cita. Vem antes de qualquer banco.
Hash (sha256)
A impressão digital de um arquivo. Se um bit muda, o hash muda.
Intent
literal (a coisa exata citada) ou illustrative (ideia genérica).
Projeto
A pasta do seu vídeo (--project). Reúne o BRIEF.md, a entrega e o bastidor brolls/.É a pasta do projeto no Premiere ou no DaVinci.
RULES.md
O padrão do seu canal: formato, fontes preferidas e sites bloqueados.
Skill
O pacote de instruções que ensina o Claude Code a usar o getbrolls. No chat, você chama com /get-brolls.
Stock
Banco de imagens e vídeos genéricos, como Pexels e Pixabay. Só entra quando você pede.
Storyboard
A página local brolls/review.html onde você revisa e decide cada trecho.
Trava
Um ponto em que o getbrolls para e espera por você: a aprovação do trecho e o registro dos direitos.
Trecho
O pedaço do vídeo que você quer, marcado em segundos, do início ao fim.É o in e o out.
yt-dlp
O programa que baixa vídeos do YouTube, do TikTok e de outras fontes. Usado por baixo, junto com o FFmpeg.
Nada encontrado. Tente outra palavra, como hash.
Perguntas frequentes
As dúvidas que mais aparecem
Escolha o assunto e abra a pergunta. Cada resposta é curta e aponta para a seção que explica por inteiro.
GeralO getbrolls edita ou renderiza o meu vídeo?
Não. Ele acha a fonte, mostra a prévia, espera a sua aprovação e entrega os trechos com a origem anotada. Ele não monta o vídeo completo: a edição final e o render continuam com você.
Não. No Claude Code, você escreve /get-brolls, o que precisa e a pasta do vídeo. O agente roda os comandos por você e mostra a saída real. O terminal é opcional: serve para quem quer rodar na mão ou automatizar.
Para começar, não. YouTube, TikTok, Wikimedia Commons e NASA funcionam sem chave. Pexels e Pixabay usam a chave de cada banco (grátis nos sites deles) e só entram quando você pede stock. O Instagram passa pelo navegador autorizado, com a sua sessão.
As chaves ficam no .env da pasta da skill, que é opcional.
GeralO que sai do meu computador?
Seus projetos e os originais ficam na sua máquina. Só a pesquisa e o download falam com as fontes que você escolheu. O Storyboard abre em 127.0.0.1, só no seu computador, e não confere quem clicou: compartilhe apenas o que a revisão precisa.
GeralA transcrição do vídeo existe na 2.5.2?
Não como comando. O que a 2.5.2 oferece para achar o trecho é o inspect, que lê duração, capítulos e legendas da fonte, e o preview --scan, que varre o vídeo numa folha de quadros.
Cole o prompt de instalação da seção Comece aqui no Claude Code. Ele instala o plugin pelo repositório, roda o /get-brolls-setup e confere com o doctor.
A .venv da pasta da skill está ausente, quebrada ou com versão diferente da fixada. Isso acontece quando o código é atualizado sem rodar o instalador de novo. Peça /get-brolls-setup outra vez.
Sim. O instalador tem versão PowerShell (scripts/install.ps1) e a CLI usa python no lugar de python3. Linux é plataforma secundária e usa o mesmo instalador do macOS.
Busca e direitosPor que não achou stock para o meu beat?
Pexels e Pixabay só entram quando você pede stock com todas as letras. A regra é fonte literal primeiro: o fato, a pessoa, o produto ou a tela que a narração cita. Sem fonte literal, o Claude diz o que tentou e pergunta se você tem material próprio ou um link.
Busca e direitosA ferramenta confere a licença do vídeo?
Não. O permit registra as condições que você informa e de onde vieram. Quem responde pelo uso é quem produz o vídeo; a skill responde pela fidelidade da fonte e pelo registro de origem de cada asset.
Sim. A aprovação vem sempre de uma pessoa, pelo Storyboard ou por fala explícita no chat. Sem ela, o fetch recusa. Mudou o intervalo, a aprovação cai e o trecho volta para revisão.
Revisão e entregaPor que o arquivo em entrega/ é somente leitura?
Porque ele é o mesmo arquivo de brolls/clips/ com outro nome (hardlink): editar ali seria editar o original. Copie antes de mexer, ou rode o deliver com GB_DELIVERY_COPY=1 para receber cópias independentes.
Atualize o plugin get-brolls para a versão 2.5.2 (repositório https://github.com/engenheirodevideo/get-brolls). Em seguida rode /get-brolls-setup para refazer a instalação das dependências e confirme com o doctor que a venv bate com as versões fixadas.
Esquecer esse segundo passo é o que o doctor da 2.5.2 agora avisa: a .venv fica com versões antigas e o item venv aparece em missing.