← Engenheiro de Vídeo
/get-brollsdocumentação 2.5.2.
Engenheiro de Vídeo · versão estável 2.5.2 · 23 out 2026

Peça o b-roll,veja a prévia,aprove e receba.

O getbrolls acha a fonte real, mostra o trecho em movimento, espera a sua decisão e entrega cada clipe com a origem anotada.

26comandos, todos explicados aqui
21recursos, cada um em cinco passos
8fontes (5 com busca por palavra)
8passos do pedido à entrega
2travas antes de baixar: aprovação e direitos
Comece aqui

Instale com um prompt

Cole o texto abaixo no Claude Code. Ele instala o plugin pelo repositório, prepara o ambiente e confere se ficou tudo certo.

Ver no GitHub
PROMPT DE INSTALAÇÃO · COLE NO CLAUDE CODE

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
PalavraO que éPensa assim
ProjetoA pasta do seu vídeo (--project)A pasta do projeto no Premiere ou DaVinci
BeatUm momento do vídeo que precisa de b-rollUm marcador na timeline
CandidatoUm vídeo encontrado que pode servirUm clipe no bin que ninguém usou
IDO código do candidato (youtube:abc123)O nome do clipe
TrechoO pedaço que você quer, em segundosO in e o out
DICIONÁRIO · DO CÓDIGO
PalavraO que é
TerminalA janela onde você digita comandos. Mac: app Terminal. Windows: PowerShell
ComandoUma linha que você cola no terminal e aperta Enter
FlagAs opções que começam com --. --project diz qual projeto
JSONO formato da resposta: texto organizado em "chave": valor
ScriptUm 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 3 BuscarO ingest: candidatos entram, nada baixa
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.

1
Buscar
python3 scripts/gb.py search --provider nasa --query "Artemis launch" --limit 3 --project ~/meu-video

É olhar o banco de imagens e marcar candidatos, sem baixar nada.

O que faz: procura 3 vídeos do lançamento do Artemis no acervo da NASA.

Você recebe: uma lista. Cada item tem um "id". Copie o id do que quiser.

2
Prévia
python3 scripts/gb.py preview --candidate "<ID>" --start 0 --end 4 --project ~/meu-video

É o proxy: você vê leve antes de puxar em alta.

O que faz: gera um GIF do segundo 0 ao 4 desse vídeo.

Você recebe: o GIF e uma folha de quadros em brolls/previews/.

3
Storyboard
python3 scripts/gb.py review --project ~/meu-video
python3 scripts/gb.py serve --background --project ~/meu-video

É mandar o corte de aprovação para o cliente.

O que faz: monta a página de aprovação e abre no navegador.

Você recebe: um link. Abra, clique em Aprovar e depois em Salvar decisões.

4
Trazer a aprovação
python3 scripts/gb.py import-review --by "Seu nome" --project ~/meu-video
python3 scripts/gb.py serve --stop --project ~/meu-video

É importar as notas do cliente de volta para o projeto.

O que faz: lê o que você salvou no navegador e fecha a página.

5
Direitos
python3 scripts/gb.py permit --candidate "<ID>" --preset nasa --project ~/meu-video

É guardar a licença junto do arquivo.

O que faz: registra os termos de uso padrão da NASA para esse vídeo.

6
Baixar e entregar
python3 scripts/gb.py fetch --candidate "<ID>" --project ~/meu-video
python3 scripts/gb.py verify --project ~/meu-video
python3 scripts/gb.py deliver --project ~/meu-video

É o export final, organizado por beat.

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.

EtapaComandoExemploO que fazQuando usar
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.
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.

  1. Vale quando o código foi atualizado por git pull ou /plugin update sem rodar o instalador de novo.
  2. A saída ganha o campo venv, com status: ok, stale, absent, broken ou pinned.
  3. Com GB_YTDLP_PATH fixado, a venv não é usada e não é cobrada (pinned).
  4. 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.

  1. 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.
  2. O registro do pip fica em .venv/pip-install.log.
  3. 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.

  1. O agente roda os comandos do terminal por você e mostra a saída real.
  2. Nada é baixado sem duas coisas: você aprovar o trecho e registrar os direitos de uso.
  3. 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.

  1. Trocar o formato nas regras atualiza o relatório e invalida aprovações anteriores.
  2. rules mostra em sources de onde veio cada campo.
  3. Responsabilidade e declaração nunca vêm da camada global: valem só no projeto do vídeo.
2
Diagrama
RULES / DAS CAMADAS AO PROJETO↓
~/.getbrolls/RULES.mdVale para todos os vídeos
GB_RULES_FILEUm arquivo que você aponta
RULES.md do projetoO último a falar vence
rulesMostra o que vale e de onde veio
3
Exemplo
AO CRIAR AS REGRAS DE UM REELS
$ python3 scripts/gb.py init-rules --format reels --project ~/meu-video
{
  "rules": "~/meu-video/RULES.md",
  "copyright": {
    "mode": "per_item_evidence",
    "responsible_person": null,
    "declaration": null
  },
  "video_format": "reels"
}
4
Comandos
python3 scripts/gb.py init-rules --format reels --project ~/meu-video

Cria o RULES.md. Formatos: reels (9:16), horizontal (16:9) ou native.

python3 scripts/gb.py init-rules --format horizontal --force --project ~/meu-video

Regrava um RULES.md que já existe.

python3 scripts/gb.py rules --project ~/meu-video

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.

  1. O id do beat (minúsculas, números e hífen) vira o --shot de toda a coleta.
  2. O Claude nunca inventa fala, alvo, link ou nome de responsável.
  3. 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."}}
4
Comandos
python3 scripts/gb.py init-brief --project ~/meu-video

Cria o BRIEF.md na pasta do projeto.

python3 scripts/gb.py brief --validate --project ~/meu-video

Confere se o BRIEF está certo. Sem erro, não lista nada.

python3 scripts/gb.py brief --project ~/meu-video

Lista os beats, o que falta cobrir e os comandos para copiar.

python3 scripts/gb.py brief --beat abertura --project ~/meu-video

Mostra só um beat, com o comando pronto dele.

/get-brolls-brief

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.

  1. --shot liga o candidato ao beat do BRIEF, e a entrega sai organizada por beat.
  2. --dry-run lista o que a fonte devolveu sem gravar nada no projeto.
  3. --media filtra por image, video ou any; só NASA e Commons têm os dois.
  4. --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.

python3 scripts/gb.py search --provider nasa --query "Artemis launch" --shot abertura --project ~/meu-video

Busca e já liga os resultados ao beat abertura.

python3 scripts/gb.py search --provider youtube --query "praia drone" --limit 8 --project ~/meu-video

Busca no YouTube. O limite vai de 1 a 50 (padrão 8).

python3 scripts/gb.py search --provider youtube --query "praia drone" --dry-run --project ~/meu-video

Espia o resultado sem gravar nada.

5
Estrutura de pasta: o que vai onde

O que vai onde

meu-video/←a pasta do vídeo
└── brolls/
├── 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.

  1. Tipos de arquivo local: video, image, news_screenshot e web_screenshot. O padrão é inferido pela extensão.
  2. Print de site precisa virar arquivo local verificável, com URL, manchete e data reais.
  3. 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
browser-planPrint de notícia ou de página
Candidato registradoPronto para a prévia
3
Exemplo
ARQUIVO SEU, COM A ORIGEM ANOTADA
$ python3 scripts/gb.py resolve --file ~/Downloads/praia.mp4 --creator "Nome do autor" --source-url "https://exemplo.com/praia" --shot abertura --project ~/meu-video
PRINT DE NOTÍCIA
$ python3 scripts/gb.py browser-plan --url "https://exemplo.com/noticia" --project ~/meu-video
$ python3 scripts/gb.py resolve --file ~/meu-video/output/playwright/captura.png --asset-type news_screenshot --title "Manchete" --captured-at 2026-10-23 --source-url "https://exemplo.com/noticia" --project ~/meu-video
4
Comandos
python3 scripts/gb.py resolve --url "https://www.youtube.com/watch?v=ID_DO_VIDEO" --shot abertura --project ~/meu-video

Registra pelo link público.

python3 scripts/gb.py resolve --file ~/Downloads/praia.mp4 --creator "Nome do autor" --source-url "https://exemplo.com/praia" --project ~/meu-video

Registra um arquivo seu.

python3 scripts/gb.py browser-plan --url "https://exemplo.com/noticia" --project ~/meu-video

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.

  1. 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.
  2. Falha com 403, 429, login ou "rate limit" pausa a fila de 30 minutos até 4 horas.
  3. 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
queue nextEntrega o item ou diz quanto esperar
Ritmo e tetosIntervalo, por hora e por dia
Já pode baixar?item ou wait_seconds
Você coleta o itemresolve e preview
queue mark--done, --failed ou --skipped
3
Exemplo
FILA COM UM LINK DO INSTAGRAM
$ python3 scripts/gb.py queue --action add --provider instagram --url "https://www.instagram.com/reel/CODIGO/" --project ~/meu-video
{"added": ["instagram:CODIGO"], "pending": 1, "summary": {"line": "Enfileirei 1 URL(s); 0 repetida(s); 1 pendente(s)."}}
$ python3 scripts/gb.py queue --action next --provider instagram --project ~/meu-video
{"item": {"id": "instagram:CODIGO", "status": "active"}, "wait_seconds": 0}
4
Comandos
python3 scripts/gb.py queue --action add --provider instagram --url "https://www.instagram.com/reel/CODIGO/" --project ~/meu-video

Enfileira o link.

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.

  1. Escreva a --query no idioma do vídeo.
  2. --max-windows define quantas janelas voltam (1 a 20, padrão 3).
  3. Com --candidate, grava só a duração no candidato; com --url, não registra nada.
2
Diagrama
INSPECT / DA FONTE À JANELA CERTA↓
Fonte escolhidaCandidato ou URL pública
inspect --queryLê duração, capítulos e legendas
Janelas pontuadasInício e fim em segundos
preview --start --endPrévia só do trecho
3
Exemplo
INSPECT COM A FALA PROCURADA
$ python3 scripts/gb.py inspect --url "https://www.youtube.com/watch?v=ID_DO_VIDEO" --query "decolagem" --project ~/meu-video
{"windows": [
  {"start": 724, "end": 731},
  {"start": 1120, "end": 1128},
  {"start": 1870, "end": 1877}
]}
4
Comandos
python3 scripts/gb.py inspect --url "https://www.youtube.com/watch?v=ID_DO_VIDEO" --query "decolagem" --project ~/meu-video

Procura em que minuto falam do assunto.

python3 scripts/gb.py inspect --candidate "<ID>" --project ~/meu-video

Lê um candidato já registrado.

python3 scripts/gb.py preview --candidate "<ID>" --scan --project ~/meu-video

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.

  1. No máximo 10 segundos por prévia e um preview por chamada. Intervalo maior é recusado.
  2. GIF padrão: 360 px, 8 fps, 128 cores, até 5 MB. Grande demais vira prévia estática, com aviso.
  3. GB_PREVIEW_MODE=static usa só pôster e sequência de quadros.
  4. 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
10:00,0
Quadro 1
20:01,0
Quadro 2
30:02,0
Quadro 3
4
Comandos
python3 scripts/gb.py preview --candidate "<ID>" --start 0 --end 4 --project ~/meu-video

Gera o GIF, o pôster e o contact sheet do trecho.

python3 scripts/gb.py preview --candidate "<ID>" --start 10 --end 15 --narration "Fala exata do roteiro" --reason "Motivo da escolha" --project ~/meu-video

Acrescenta a fala e o motivo, que aparecem para quem for aprovar.

python3 scripts/gb.py preview --candidate "<ID>" --scan --project ~/meu-video

Varre o vídeo inteiro para achar o in e o out.

python3 scripts/gb.py preview --candidate "<ID>" --reference-only --project ~/meu-video

Gera só uma imagem parada, sem obter o vídeo.

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 (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.

  1. Em cada trecho: Aprovar, Pedir ajuste (com comentário; cabe "procure outro vídeo") ou Reprovar.
  2. Abra pelo link que o serve devolveu e salve antes de fechar a aba. Abrir por file:// pode desligar o salvamento local.
  3. Se o intervalo mudou depois da decisão, o trecho volta como stale_epoch ou signature_mismatch e a decisão antiga nunca é reaplicada.
  4. 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
ILUSTRAÇÃO · UMA LINHA DO STORYBOARD
GIF
FALA
Tudo começa na contagem regressiva
ALVO
decolagem da Artemis
INTERVALO
0 s → 4 s
FONTE
autor e link da fonte original
AprovarPedir ajusteReprovar
Salvar decisões
4
Comandos
python3 scripts/gb.py review --project ~/meu-video

Monta o Storyboard.

python3 scripts/gb.py serve --background --project ~/meu-video

Abre a página e devolve o link em urls.

python3 scripts/gb.py import-review --by "Seu nome" --project ~/meu-video

Importa as decisões. Sem --file, pega o arquivo mais recente.

python3 scripts/gb.py serve --stop --project ~/meu-video

Fecha o Storyboard.

/get-brolls-review

No chat: faz tudo isso e te manda o link.

5
Estrutura de pasta: o que vai onde

O que vai onde

meu-video/←a pasta do vídeo
└── brolls/
├── 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.

  1. No canal chat, --statement é obrigatório. Silêncio não é aprovação e o agente não se autoaprova.
  2. --all só vale quando todos os candidatos com prévia foram mostrados.
  3. reject zera o output do candidato: nada fica rejeitado e entregue ao mesmo tempo. Nada é apagado de brolls/.
  4. 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."}}
4
Comandos
python3 scripts/gb.py approve --candidate "<ID>" --by "Seu nome" --channel chat --statement "Pode usar esse trecho" --project ~/meu-video

Aprova um trecho, com quem aprovou e a frase.

python3 scripts/gb.py approve --all --by "Seu nome" --channel chat --statement "Aprovo todos" --project ~/meu-video

Aprova todos os que têm prévia e estão sem aprovação válida.

python3 scripts/gb.py reject --candidate "<ID>" --reason "Texto sobreposto atrapalha" --project ~/meu-video

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.

  1. O modo do projeto vem do RULES.md: per_item_evidence (um por um) ou user_declaration (a declaração cobre o projeto).
  2. Responsabilidade e declaração valem só no projeto em que o vídeo é feito.
  3. 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.

  1. A conferência passa por todos os clipes antes de falhar, para que um segundo arquivo alterado não continue marcado como verificado.
  2. Uma verify limpa depois de restaurar o arquivo volta a marcar como verificado.
  3. 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."}}
4
Comandos
python3 scripts/gb.py fetch --candidate "<ID>" --project ~/meu-video

Baixa e corta só o trecho aprovado.

python3 scripts/gb.py verify --project ~/meu-video

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.

  1. Os arquivos entram por hardlink: não ocupam disco duas vezes, mas editar em entrega/ é editar o original. Por isso nascem somente-leitura.
  2. GB_DELIVERY_COPY=1 entrega cópias independentes e editáveis.
  3. Rodar de novo é seguro. O que você criou dentro de entrega/ é preservado, e arquivo entregue que você editou nunca é sobrescrito.
  4. 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`
4
Comandos
python3 scripts/gb.py deliver --dry-run --project ~/meu-video

Mostra como a pasta vai ficar, sem criar nada.

python3 scripts/gb.py deliver --project ~/meu-video

Organiza tudo em entrega/.

5
Estrutura de pasta: o que vai onde

O que vai onde

meu-video/←a pasta do vídeo
├── entrega/←é daqui que você arrasta
│ ├── README.md←explica a pasta e lista tudo
│ └── 01-abertura-decolagem-da-artemis/←número do beat, id e alvo
│ ├── 01-abertura-decolagem-da-artemis.mp4←o corte
│ ├── contact-sheet.jpg←quadros com timecode
│ └── 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.

  1. Só lê. Pode rodar enquanto um fetch longo está em andamento, sem esperar.
  2. Num projeto que não existe, responde que não encontrou e não cria nada.
  3. 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.

  1. --decision é approved ou rejected, e --reason é obrigatório.
  2. A memória é por projeto. Para ver a de outro projeto, aponte --project para ele, com a autorização da pessoa.
2
Diagrama
MEMÓRIA / DA DECISÃO À CONSULTA↓
Você decidiuUm trecho entrou ou saiu
rememberDecisão, motivo e nome
referencesConsulta antes de buscar de novo
3
Exemplo
GUARDANDO UM ACERTO
$ python3 scripts/gb.py remember --candidate "<ID>" --decision approved --reason "Plano aberto e limpo" --by "Seu nome" --project ~/meu-video
4
Comandos
python3 scripts/gb.py remember --candidate "<ID>" --decision approved --reason "Plano aberto e limpo" --by "Seu nome" --project ~/meu-video

Guarda um acerto.

python3 scripts/gb.py remember --candidate "<ID>" --decision rejected --reason "Marca d'água grande" --by "Seu nome" --project ~/meu-video

Guarda um descarte.

python3 scripts/gb.py references --project ~/meu-video

Mostra tudo que o projeto guardou.

5
Estrutura de pasta: o que vai onde

O que vai onde

meu-video/←a pasta do vídeo
└── brolls/
└── 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.

  1. Fica em ~/.getbrolls/library. Desligue com GB_LIBRARY=off.
  2. A biblioteca mistura projetos: não cole o texto dela numa conversa com cliente.
  3. --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
library --searchConsulta antes de buscar
3
Exemplo
GUARDANDO E CONSULTANDO
$ python3 scripts/gb.py learn --query "praia drone" --provider youtube --outcome hit --project ~/meu-video
$ python3 scripts/gb.py library --search "praia" --project ~/meu-video
4
Comandos
python3 scripts/gb.py learn --query "praia drone" --provider youtube --outcome hit --project ~/meu-video

Guarda que a busca rendeu.

python3 scripts/gb.py learn --preference "Prefiro imagens sem texto na tela" --by "Seu nome" --project ~/meu-video

Guarda um gosto seu.

python3 scripts/gb.py library --search "praia" --project ~/meu-video

Consulta o que já foi guardado.

5
Estrutura de pasta: o que vai onde

O que vai onde

~/.getbrolls/←vale para todo projeto
└── library/←buscas, preferências e notas
Recursos · 7 de 7

Registros e segurança

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.

  1. GB_LOG_LEVEL aceita DEBUG, INFO (padrão), WARNING, ERROR e off.
  2. GB_LOG_STDERR=1 espelha o log no terminal, para depurar.
  3. Comando de leitura não cria o arquivo, e falha de log nunca derruba um comando.
  4. 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.

  1. A página não pede login: ela serve a projetos locais confiáveis. Compartilhe só o necessário à revisão.
  2. O processo em segundo plano não herda as chaves de provedor.
  3. .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
4
Comandos
python3 scripts/gb.py serve --background --project ~/meu-video

Sobe o Storyboard e devolve o link.

python3 scripts/gb.py serve --background --port 8800 --project ~/meu-video

Escolhe outra porta.

python3 scripts/gb.py serve --stop --project ~/meu-video

Encerra o servidor pelo PID gravado.

5
Estrutura de pasta: o que vai onde

O que vai onde

meu-video/←a pasta do vídeo
└── brolls/
├── review.html←entregue pelo servidor
├── previews/←entregue pelo servidor
├── clips/←entregue pelo servidor
├── manifest.json←nunca sai: responde 404
└── .serve.pid←o PID do servidor
Registros e segurançaestável

Rede protegida e ritmo educado

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.

  1. Respeita Retry-After e faz pausas do yt-dlp entre downloads.
  2. Seus projetos e originais ficam locais. Só a pesquisa e o download falam com as fontes que você escolheu.
  3. 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
RecusadoCom a causa no erro, sem expor chaves
3
Exemplo
O QUE VOCÊ VÊ QUANDO ALGO FALHA
{"error": "…", "error_code": "INVALID_DATA", "hint": "…", "log": "~/meu-video/brolls/diagnostics.jsonl", "app_log": "~/meu-video/brolls/getbrolls.log"}
4
Comandos
python3 scripts/gb.py doctor

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ódigoSignifica
0Deu certo
2Erro de uso ou de dados: um ID errado, falta aprovação, link fora do ar
3Erro 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 · objectiveObrigatórios. Nome e o que o vídeo precisa mostrar
delivery.formatreels (9:16), horizontal (16:9) ou native
rights.postureper_item_evidence (um por um) ou user_declaration (você assume tudo)
stock_allowedtrue libera Pexels e Pixabay. Padrão: fonte real primeiro
intentliteral (a coisa exata) ou illustrative (ideia genérica)
beats[].idMinúsculas, números e hífen. Vira o --shot
beats[].targetObrigatório. O que precisa aparecer na tela
beats[].queriesBuscas que já funcionaram. A primeira vira a sugerida
blocked_reasonO beat depende de algo que só você tem. Não é buscado até você apagar
RULES.md · O PADRÃO DO SEU CANAL
{
  "version": 1,
  "video_format": "native",
  "preferred_providers": {
    "literal": ["youtube", "commons", "nasa"],
    "illustrative": ["pexels", "pixabay"]
  },
  "blocked_domains": [],
  "copyright": {
    "mode": "per_item_evidence",
    "responsible_person": null,
    "declaration": null
  }
}
video_formatnative, reels ou horizontal
preferred_providersA ordem das fontes para busca literal e ilustrativa
blocked_domainsSites que nunca podem entrar
copyright.modeper_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.

ID=$(python3 scripts/gb.py search --provider nasa --query "Artemis launch" --limit 1 --project ~/meu-video | jq -r '.items[0].id')
echo "$ID"
python3 scripts/gb.py preview --candidate "$ID" --start 0 --end 4 --project ~/meu-video

Perguntar "qual o próximo passo?"

Mostra a frase do status e o comando do próximo passo.

python3 scripts/gb.py status --project ~/meu-video | jq -r '.summary.line, .summary.do.command'

Parar o script se algo der errado

set -e interrompe no primeiro comando que falhar, em vez de seguir no escuro.

set -e
python3 scripts/gb.py fetch --candidate "$ID" --project ~/meu-video
python3 scripts/gb.py verify --project ~/meu-video
python3 scripts/gb.py deliver --project ~/meu-video
O QUE NUNCA AUTOMATIZAR

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?

AconteceuFaça
python3 não existeNo Windows, use python.
Falta alguma ferramentaRode doctor. Se aparecer venv, peça /get-brolls-setup de novo.
fetch recusouFaltou aprovar (passo 5) ou registrar os direitos (passo 6).
Busca vaziaMenos palavras, no idioma do vídeo.
"Trecho grande demais"A prévia aceita no máximo 10 segundos.
Salvei no Storyboard e nadaRode import-review. Abra a página pelo link do serve, não pelo arquivo.
Decisão pulada com stale_epochO intervalo mudou depois da decisão. Gere a prévia e o Storyboard de novo e decida outra vez.
Não sei onde pareiRode status.
Erro estranhoOlhe 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.

Repositório no GitHub
O QUE A INSTALAÇÃO COLOCA NA SUA MÁQUINA
FerramentaPara quêSem ela
Python 3.11+CLI, ledger, coleta do Instagramnada roda
FFmpeg e ffprobe com libfreetype (drawtext)pôster, contact sheet numerado, GIF e cortessem prévia; sem drawtext, a folha de quadros sai sem número e tempo
Node 22+ com npm e npxPlaywright CLI e runtime EJS do yt-dlpYouTube e Instagram falham
curldownload dos pares de stream do InstagramInstagram falha
Gitclonar e atualizarinstalação manual
yt-dlp e Playwright CLIo instalador coloca na pasta da skillYouTube, 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.

PalavraO que é
AprovaçãoA 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.
BeatUm momento do vídeo que precisa de b-roll, com id, fala e alvo no BRIEF.md.É um marcador na timeline.
BRIEF.mdO plano deste vídeo, beat a beat. Markdown com um bloco JSON dentro.
CandidatoUm vídeo ou imagem encontrado que pode servir. Entra no projeto sem ser baixado.É um clipe no bin que ninguém usou.
Contact sheetA folha de quadros do trecho, numerada e com tempo em cada célula.É a folha de contato do fotógrafo.
Direitos de usoAs 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 literalO 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.
Intentliteral (a coisa exata citada) ou illustrative (ideia genérica).
ProjetoA 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.mdO padrão do seu canal: formato, fontes preferidas e sites bloqueados.
SkillO pacote de instruções que ensina o Claude Code a usar o getbrolls. No chat, você chama com /get-brolls.
StockBanco de imagens e vídeos genéricos, como Pexels e Pixabay. Só entra quando você pede.
StoryboardA página local brolls/review.html onde você revisa e decide cada trecho.
TravaUm ponto em que o getbrolls para e espera por você: a aprovação do trecho e o registro dos direitos.
TrechoO pedaço do vídeo que você quer, marcado em segundos, do início ao fim.É o in e o out.
yt-dlpO programa que baixa vídeos do YouTube, do TikTok e de outras fontes. Usado por baixo, junto com o FFmpeg.
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ê.

GeralPreciso saber programar?

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.

GeralPreciso de chave de API ou de login?

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.

InstalaçãoComo instalo?

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.

InstalaçãoO que o doctor quer dizer com "venv"?

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.

InstalaçãoNo Windows funciona?

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.

Busca e direitosDá para buscar Reels do Instagram por palavra?

Não. Instagram e TikTok dependem de você descobrir a URL no navegador. Depois, resolve --url registra o link e a queue espaça o lote.

Revisão e entregaPreciso aprovar cada trecho?

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.

NÃO ACHOU A SUA DÚVIDA?
  • Veja a tabela Deu erro?: ela traz o que fazer em cada caso comum.
  • Cada comando explica o que aceita: python3 scripts/gb.py search --help (troque search por qualquer um).
  • Perdeu o fio do projeto? python3 scripts/gb.py status --project ~/meu-video diz onde você parou e traz o próximo comando pronto.
Atualizar

Saiu versão nova?

Atualizar não mexe nos seus projetos. Cole o prompt abaixo: o Claude atualiza o plugin e refaz a instalação das dependências, e o doctor confirma.

Ver releases no GitHub
PROMPT DE ATUALIZAÇÃO · COLE NO CLAUDE CODE

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.