bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
Collect, storyboard review, and secure delivery of B‑rolls for macOS and Windows.
AI translation
Coleta, revisão em Storyboard e entrega segura de B-rolls para macOS e Windows.
SkillsPython · JavaScriptGitHub @engenheirodevideoSelf-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Installable projects can be verified without a deployment domain. Use GitHub sign-in for a personal repository, or the repository verification file above for an organization repository.
Ask about other verification options
Loading the full README. The saved excerpt is shown below.
GET B-ROLLS Da ideia ao trecho certo para a sua edição. Encontre imagens de apoio, veja o movimento e revise cada escolha antes de receber os cortes finais com suas fontes. Comece aqui · Destaques · Documentação · Manual e tutorial · Guia completo Get B-rolls é uma skill para coletar os vídeos e imagens que apoiam uma fala, ilustram uma ideia ou mostram exatamente a pessoa, o produto e o acontecimento citados no roteiro. Você descreve o que precisa; o agente pesquisa, prepara as prévias e reúne as escolhas em um storyboard para sua revisão.Read the full README ↗
Get B-rolls é uma skill para coletar os vídeos e imagens que apoiam uma fala, ilustram uma ideia ou mostram exatamente a pessoa, o produto e o acontecimento citados no roteiro. Você descreve o que precisa; o agente pesquisa, prepara as prévias e reúne as escolhas em um storyboard para sua revisão.
O agente procura a fonte literal do que você cita: o fato, a pessoa, o produto, a notícia ou a tela reais. Bancos de vídeo entram somente quando você pedir stock explicitamente. Um único insert funciona sem roteiro completo: basta explicar o que precisa aparecer.
A prévia pode baixar mídia de trabalho para mostrar o movimento. A entrega final depende da decisão humana e do registro das condições de uso da fonte. Se o intervalo ou o contexto mudar, o trecho volta para revisão.
doctor passa a conferir a .venv contra as versões fixadas: código atualizado sem rodar o instalador de novo aparece em summary.missing (item venv). Mensagem do instalador diz se a falha foi rede, hash ou versão do Python.certifi 2026.10.19 tira a raiz emSign ECC Root CA - G3 (GHSA-6q48-6c7w-9gw2) e os instaladores instalam o pip 26.2.2 e todas as dependências Python conferindo o sha256 de cada arquivo (--require-hashes). Rode o instalador de novo. Dependências atualizadas como um conjunto revisado.brolls/getbrolls.log (GB_LOG_LEVEL, GB_LOG_STDERR): comandos, trilha de aprovação, subprocessos e rede, sem nomes, frases de aprovação nem URLs. reject zera o output, verify confere todos os clipes e desmarca o que foi alterado, e deliver pula clipe rejeitado ou reprovado e lista em skipped. Storyboard local endurecido (só review.html, previews/ e clips/, cabeçalhos contra embutir a página). ~/.getbrolls/RULES.md ilegível passa a parar o comando em vez de ser ignorado.scripts/preflight.sh), versão escrita numa passada (scripts/bump_version.py) e espelho do SKILL.md gerado (scripts/gen_skill_mirror.py). GB_CACHE_DIR passa a valer no .env; GETBROLLS_CACHE_DIR continua funcionando. Sem mudança no fluxo de coleta.description ganha aspas; o GitHub não renderizava o arquivo).BRIEF.md por projeto (init-brief/brief), aprovação pelo chat (approve --all --by NOME --channel chat --statement "..."), biblioteca de aprendizados entre projetos (learn/library), análise da fonte antes de coletar (inspect, preview --scan), pasta entrega/ por beat (deliver), Storyboard que salva as decisões dentro do projeto, próximo passo pronto em status.summary.do, search --shot/--dry-run e init-rules --format.queue), instagram_pairs --pace/--max-per-run/--continue-on-error, pausas do yt-dlp e respeito a Retry-After, erros legíveis com stderr redigido, cache por intervalo/NASA/drawtext, e comando serve para o Storyboard local.status --project ("onde estamos?"), CLI autoexplicativa com --version, comando de plugin /get-brolls-setup, quickstart "Primeiro B-roll em 5 minutos", caminhos de ferramentas fixáveis via GB_*_PATH e AGENTS.md como hub do repositório.Histórico completo no CHANGELOG.md.
A skill só funciona completa com todas as ferramentas abaixo instaladas antes do passo 2. Sem uma delas, a coleta roda parcialmente e o Storyboard sai sem prévia ou sem contact sheet numerado.
| Ferramenta | Para quê | Sem ela |
|---|---|---|
| Python 3.11+ | CLI, ledger, coleta do Instagram | nada roda |
FFmpeg + ffprobe com libfreetype (drawtext) | poster, contact sheet numerado, GIF, cortes | sem prévia; sem drawtext, o sheet sai sem número/timecode e o Storyboard mostra só a legenda |
| Node 22+ com npm/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 | instalados pelo install.sh/install.ps1 no passo 2 | YouTube/TikTok e Instagram falham |
macOS (Homebrew):
brew install python ffmpeg node git curl
Windows (winget, PowerShell 5.1 já serve):
winget install Python.Python.3.13 Gyan.FFmpeg OpenJS.NodeJS.LTS Git.Git
Ubuntu/Debian:
sudo apt install python3 python3-venv ffmpeg nodejs npm curl git
Depois do passo 2, python3 scripts/gb.py doctor é o gate: summary.missing vazio e contact_sheet.labels: true. Se aparecer drawtext em summary.optional, seu FFmpeg veio sem libfreetype: reinstale pelo comando acima (no macOS, brew reinstall ffmpeg).
No Claude Code, você também pode instalar a skill como plugin, sem clonar manualmente:
/plugin marketplace add engenheirodevideo/get-brolls
/plugin install get-brolls@engenheirodevideo
git clone https://github.com/engenheirodevideo/get-brolls.git
cd get-brolls
| Agente | Instalação pessoal | Dentro de um projeto | Como chamar |
|---|---|---|---|
| Codex | ~/.agents/skills/get-brolls/ | .agents/skills/get-brolls/ | $get-brolls |
| Claude Code | ~/.claude/skills/get-brolls/ | .claude/skills/get-brolls/ | /get-brolls |
Ao copiar uma pasta de desenvolvimento, exclua .venv/, .tools/, caches, projetos e arquivos privados. skills/ e .claude-plugin/ são artefatos do plugin do Claude Code e podem ser omitidos ao copiar para o Codex. Instale as dependências no destino final e abra uma nova sessão do agente. Veja instalação, atualização e compatibilidade.
Na pasta instalada da skill, use o instalador do seu sistema.
macOS:
bash scripts/install.sh --check
bash scripts/install.sh
python3 scripts/gb.py doctor
Windows PowerShell:
powershell -ExecutionPolicy Bypass -File scripts/install.ps1 -Check
powershell -ExecutionPolicy Bypass -File scripts/install.ps1
python scripts/gb.py doctor
O instalador cria os ambientes locais e obtém as versões registradas de yt-dlp/EJS e Playwright CLI. --check só valida pré-requisitos (Python, FFmpeg/ffprobe, Node, curl, Git) e não instala nada; rode-o antes do instalador completo para saber o que falta. doctor confere a disponibilidade das ferramentas depois de instaladas; o acesso a cada fonte depende da URL e, quando necessário, da sua sessão de navegador.
Quer cada comando explicado, passo a passo? Veja o manual + tutorial.
A sequência mais curta pelo terminal, usando uma fonte sem chave (NASA). Troque /caminho/meu-video pelo seu projeto e <ID> pelo identificador devolvido pela busca — mantenha as aspas, porque identificadores podem conter espaços.
python3 scripts/gb.py search --provider nasa --query "Artemis launch" --limit 3 --intent literal --project /caminho/meu-video
python3 scripts/gb.py preview --candidate "<ID>" --start 0 --end 4 --project /caminho/meu-video
python3 scripts/gb.py review --project /caminho/meu-video
python3 scripts/gb.py serve --background --project /caminho/meu-video
Abra o storyboard local pela URL que o comando devolveu na hora, decida os trechos e exporte o JSON — abrir a página por file:// pode desativar o salvamento local, então exporte antes de fechar.
python3 scripts/gb.py import-review --by "Seu nome" --project /caminho/meu-video
python3 scripts/gb.py serve --stop --project /caminho/meu-video
python3 scripts/gb.py permit --candidate "<ID>" --evidence "Condições de uso reais dessa fonte" --project /caminho/meu-video
python3 scripts/gb.py fetch --candidate "<ID>" --project /caminho/meu-video
python3 scripts/gb.py verify --project /caminho/meu-video
No fim, verify responde "count": 1 e o clipe aprovado está em /caminho/meu-video/brolls/clips/, com origem, autor e decisão registrados em brolls/credits.md. Trocar nasa por commons segue o mesmo fluxo.
Se você nunca abriu um terminal, esta é a lista inteira. Todos os passos são conversa com o agente; nada aqui pede comando.
/get-brolls-setup. Ele instala tudo e responde em uma linha se está pronto. Repita depois de cada /plugin update./get-brolls preciso de vídeos de apoio pro meu Reel sobre X — e diga também em que pasta o projeto vai ficar./get-brolls-brief./get-brolls-review, ele te manda um link, você clica em Aprovar / Pedir ajuste / Reprovar e em Salvar decisões, e volta para dizer que salvou. Sem essa etapa, nada é baixado.entrega/, uma pasta por trecho, com um ORIGEM.md dizendo de onde veio cada um./get-brolls-status: ele diz em que pé está e qual é o próximo passo.Na ordem de uso, do primeiro contato à entrega:
1. Instale o ambiente (uma vez, na pasta do plugin ou do clone):
/get-brolls-setup # instala as dependências e roda o doctor
2. Chame a skill com o que você precisa:
/get-brolls <seu pedido> # Claude Code — descreva os inserts e a pasta do projeto
$get-brolls <seu pedido> # Codex — mesma coisa
/get-brolls-brief # entrevista e escreve o BRIEF.md do vídeo
/get-brolls-review # monta o Storyboard, te manda o link e importa as decisões
/get-brolls-status # diz em que pé está a coleta e qual é o próximo passo
3. Confira o ambiente quando algo não funcionar:
python3 scripts/gb.py doctor # verifica ferramentas e diz o que falta
4. Pesquise e escolha (o agente executa por você, mas dá pra rodar na mão):
python3 scripts/gb.py search ... # pesquisa candidatos na fonte escolhida
python3 scripts/gb.py preview ... # gera GIF/contact sheet do intervalo
python3 scripts/gb.py review ... # monta o storyboard brolls/review.html
python3 scripts/gb.py serve ... # sobe o storyboard em http://localhost:8767/review.html
4b. Lotes sociais com ritmo (opcional, para vários Reels/vídeos de uma vez):
python3 scripts/gb.py queue --action add|next|mark|status ... # enfileira, dá o próximo no ritmo certo e fecha o item
5. Decida e receba:
python3 scripts/gb.py import-review ... # importa suas decisões do storyboard
python3 scripts/gb.py reject --candidate ID --reason "por que saiu" # descarta e guarda o porquê
python3 scripts/gb.py permit ... # registra as condições de uso da fonte
python3 scripts/gb.py fetch ... # baixa o corte final aprovado
python3 scripts/gb.py verify ... # confere a entrega no projeto
--reason é opcional e fica gravado no candidato como rejection.reason; o status mostra esse texto em items[].rejection_reason, então quem abrir o projeto meses depois lê por que aquele trecho saiu sem precisar perguntar a ninguém.
6. Se perdeu? Pergunte onde o projeto está:
python3 scripts/gb.py status --project /caminho/meu-video # resumo por etapa, só leitura
Cada subcomando aceita help; a sintaxe completa está em Usar pelo terminal.
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 aprovar, pedir ajuste ou sugerir outra fonte por trecho. Detalhes do storyboard.status --project resume candidatos, prévias, decisões, permissões e entregas, com o próximo passo sugerido, sem alterar o projeto. Veja uso pelo terminal.queue enfileira URLs de Instagram/TikTok/YouTube e só devolve o próximo item quando o intervalo e os tetos por hora/dia permitem — a CLI nunca dorme, ela diz quanto esperar. serve sobe o Storyboard local em http://localhost:8767/review.html sem comando solto de http.server./get-brolls-setup configurando a pasta do plugin e uma skill espelhada que resolve caminhos via ${CLAUDE_PLUGIN_ROOT}. O fluxo clone-como-skill continua idêntico para Codex.O comando review gera brolls/review.html: uma página local para avaliar a coleta, navegar entre os trechos e devolver decisões ao agente.
| Na revisão | O que você faz |
|---|---|
| Quadro selecionado | Alterna entre imagem estática e GIF, mantendo a proporção original. |
| Contexto e origem | Consulta fala fornecida, intervalo, motivo da escolha, autor e link da fonte. |
| Decisão por trecho | Aprovar, Pedir ajuste (com comentário; dentro dele cabe "procure outro vídeo") ou Reprovar. |
| Salvar decisões | Baixa um JSON para o agente importar no projeto e mostra a instrução de voltar à conversa. |
| Imprimir / PDF | Gera uma versão estática com quadros, fontes e comentários. |
A galeria permanece estática; a animação acontece no quadro selecionado e respeita a preferência por movimento reduzido. Um print opcional da pessoa serve de contexto e permanece estático. Para avaliar uma composição pronta do mesmo insert, use GB_GIF_SCOPE=full com --full-preview-file.
Compartilhe a pasta brolls/ completa, para manter as imagens e os GIFs acessíveis. Para continuar editando ou regenerar prévias, preserve também os originais e .getbrolls-sources/. Detalhes da revisão.
| Fonte | Como encontrar | Como obter |
|---|---|---|
| YouTube | Busca por palavras ou URL | yt-dlp + FFmpeg; sem API key. |
| Reel encontrado no navegador | Captura de vídeo e áudio do mesmo Reel; coletor incluído une os canais. | |
| TikTok | URL completa descoberta no navegador | yt-dlp + FFmpeg; sem API key. |
| Pexels / Pixabay | Busca nas APIs dos bancos | Chave do respectivo banco; download HTTPS. |
| Wikimedia Commons / NASA | Busca nas APIs públicas | Download HTTPS; sem chave. |
| Arquivo local | Vídeo, imagem ou captura fornecida | Importação local com origem e autoria, quando informadas. |
Pexels e Pixabay são rota opcional: o agente recorre a bancos somente quando você pede stock explicitamente. O padrão é a fonte literal do que a narração cita.
Para Instagram, o agente opera o navegador autorizado e entrega os dois streams ao coletor; o script não captura a sessão sozinho. O guia Instagram cobre seleção dos pares, download, áudio e recuperação. Instagram e TikTok dependem da descoberta da URL no navegador; não há busca global por palavra-chave na CLI.
O coletor aceita somente URLs públicas HTTPS sem credenciais, rejeita resolução para redes locais, fixa o download no endereço validado e não segue redirecionamentos. Arquivos indicados por output= permanecem dentro de --config-output-root; outputs em lote ficam no diretório escolhido e arquivos existentes não são sobrescritos.
Os ensaios registrados incluem aquisição real de YouTube, Instagram, TikTok, Pexels e Pixabay. Para Commons/NASA, a evidência cobre busca e disponibilidade do arquivo, sem download integral naquele ensaio. Consulte os resultados e seus limites em Qualidade e evidências.
Execute os exemplos abaixo na pasta da skill. Troque /caminho/meu-video pelo seu projeto e <ID> pelo identificador retornado na busca — mantenha as aspas, porque os identificadores podem conter espaços.
python3 scripts/gb.py status --project /caminho/meu-video
python3 scripts/gb.py rules --project /caminho/meu-video
python3 scripts/gb.py references --project /caminho/meu-video
python3 scripts/gb.py search --provider youtube --query "NASA Artemis launch" --limit 3 --intent literal --project /caminho/meu-video
python3 scripts/gb.py preview --candidate "<ID>" --start 0 --end 5 --reason "Mostrar a decolagem citada no vídeo" --project /caminho/meu-video
python3 scripts/gb.py review --project /caminho/meu-video
python3 scripts/gb.py serve --background --project /caminho/meu-video
Abra o storyboard local pela URL que o comando devolveu na hora, revise os trechos e exporte as decisões — abrir por file:// pode desativar o salvamento local, então exporte antes de fechar.
python3 scripts/gb.py import-review --by "Nome de quem revisou" --project /caminho/meu-video
python3 scripts/gb.py serve --stop --project /caminho/meu-video
python3 scripts/gb.py permit --candidate "<ID>" --evidence "Evidência real das condições de uso" --project /caminho/meu-video
python3 scripts/gb.py fetch --candidate "<ID>" --project /caminho/meu-video
python3 scripts/gb.py verify --project /caminho/meu-video
Substitua o nome e a evidência pelos dados reais. Repita permit e fetch para cada candidato aprovado. approve também pode registrar uma decisão explícita já recebida. verify confere integridade e decodificação dos arquivos; a avaliação editorial é sua.
status responde onde a coleta está a qualquer momento — candidatos, prévias, decisões, permissões e entregas, com o próximo passo sugerido — e não altera o projeto. Os comandos do fluxo também devolvem um campo summary com uma linha dizendo o que acabou de acontecer. Detalhes do estado e do progresso.
resolve --url URL_REAL --shot insert-01 --project /caminho/meu-video.resolve --file /caminho/original.mp4 --source-url URL_REAL --creator "Autor" --shot insert-01 --project /caminho/meu-video. Use metadados reais; uma fonte sem URL pode omitir --source-url.--narration à prévia quando houver roteiro fornecido.init-rules --project /caminho/meu-video cria um RULES.md editável com formatos, fontes preferidas e bloqueios.remember registra referências aprovadas ou rejeitadas; references consulta o histórico daquele projeto.GB_PREVIEW_MODE=static usa poster e sequência de quadros.--reference-only prepara uma referência estática sem obter mídia remota; um poster isolado não comprova movimento.scripts/getbrolls/tools/youtube/ oferecem busca, quadros, cortes e verificação de YouTube por VIDEO_ID. Seus resultados precisam ser importados pela CLI para integrar o registro e a revisão do projeto.Use python3 scripts/gb.py --help e python3 scripts/gb.py preview --help para consultar os argumentos. Fora da pasta da skill, use o caminho absoluto de scripts/gb.py.
Ao atualizar para 2.3.5, regenere o Storyboard e exporte uma revisão atual. JSONs baseados em decisões anteriores ou sem reviewEpoch são recusados. Veja a migração.
Os arquivos de projeto e os originais importados ficam locais. Pesquisa e aquisição remotas se conectam aos provedores escolhidos. Guarde chaves, sessão do navegador, configs Instagram e URLs assinadas em ambiente privado; esses dados não pertencem à pasta distribuída da skill.
O storyboard é destinado a projetos locais confiáveis e não possui autenticação de revisor. Compartilhe apenas o material necessário à revisão. As condições de uso pertencem a cada fonte; o registro de uma decisão não verifica automaticamente sua licença. A responsabilidade pelas condições de uso do material é de quem produz o vídeo; a skill responde pela fidelidade da fonte e pelo registro da origem de cada asset.
A resolução final depende da fonte: prefira 1080p quando disponível e confira as dimensões reais. A ferramenta preserva a proporção e sinaliza incompatibilidades de formato. Ela não monta automaticamente o vídeo completo, não faz busca de imagens via API nem entrega áudio isolado como asset final.
Execute um comando por projeto de cada vez. Preserve originais, cache e histórico de eventos. Se o registro for salvo e a geração da página falhar, execute review novamente. A CLI e o instalador são nativos em macOS e Windows; os helpers Bash de YouTube são opcionais e têm equivalentes no fluxo principal da CLI. Veja compatibilidade.
| Entrada | Para que serve |
|---|---|
| README.md | Visão do produto e primeiro uso (este arquivo). |
| README.en.md | Product overview and first use in English. |
| AGENTS.md | Índice para agentes e mantenedores: mapa do repositório, instalação por agente e regras de manutenção. |
| docs/MANUAL.md | Manual + tutorial: cada comando explicado, formato da resposta, BRIEF/RULES/.env e automação. Comece por aqui se está chegando agora. |
| docs/GUIDE.md · SKILL.md | Manual completo e instruções de execução para o agente. |
| docs/QUALITY.md | Testes, evidências reais e limites conhecidos. |
| docs/RULES.md · .env.example.pt-BR | Regras editoriais e opções de configuração. |
| docs/SECURITY.md | Tratamento de dados privados e relato de vulnerabilidades. |
scripts/getbrolls/ | Núcleo único: CLI, provedores, Storyboard, coletor Instagram e utilitários YouTube. |
Para manter o projeto, comece por CONTRIBUTING e AGENTS. Consulte QUALITY, CHANGELOG e SECURITY para evidências, mudanças e tratamento de dados privados.
Criado e mantido por Bruno Moreira — Engenheiro de Vídeo. Instagram: @zbrunomoreira.
Código sob licença MIT. Dependências externas mantêm suas próprias condições, descritas nos avisos de terceiros.
assets/ | Logo, estilos e scripts usados pelo Storyboard gerado. |
agents/ · schemas/ | Apresentação no agente e contrato de dados. |
tests/ · .github/workflows/ | Testes e automação de qualidade. |