# 🤝 Como Contribuir com o OSINT Brazuca

README Principal Exemplos Práticos Fluxogramas Guia Rápido Contribuir Dataset Ferramentas

Obrigado por considerar contribuir com o projeto OSINT Brazuca! Este documento fornece diretrizes para diferentes tipos de contribuições. --- ## 📋 Tipos de Contribuição ### 1. 🔗 Reportar Links Quebrados Se você encontrou um link que não está funcionando: **Crie uma Issue com as seguintes informações:** - **Título**: `[LINK QUEBRADO] Nome da fonte` - **Descrição**: - URL completo do link quebrado - Data em que testou - Tipo de erro (404, timeout, redirecionamento, etc.) - Se possível, sugira uma alternativa **Exemplo:** ```markdown **Título:** [LINK QUEBRADO] Consulta CNPJ Receita Federal **Descrição:** - URL: http://servicos.receita.fazenda.gov.br/Servicos/cnpjreva/ - Data do teste: 02/02/2026 - Erro: 404 - Página não encontrada - Alternativa sugerida: https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/ ``` --- ### 2. ➕ Adicionar Novas Fontes Quer adicionar uma nova fonte de informação pública? **Antes de submeter:** 1. ✅ Verifique se a fonte já não existe no README 2. ✅ Teste o link para garantir que está funcionando 3. ✅ Confirme que a fonte é **pública** e **legal** 4. ✅ Verifique se está no contexto brasileiro **Informações a fornecer:** - Nome da fonte - Descrição clara e objetiva - URL (testado e funcionando) - Categoria apropriada - Indicar se é gratuito ou pago - Indicar se requer cadastro **Exemplo de formatação:** ```markdown ### Nome da Nova Fonte Descrição clara explicando o que a fonte oferece e qual tipo de informação pode ser consultada.
Links de pesquisa - https://exemplo.gov.br/consulta - https://exemplo.gov.br/api (se houver)
``` --- ### 3. 📝 Melhorar Documentação Contribuições para melhorar a documentação são sempre bem-vindas: - Corrigir erros ortográficos ou gramaticais - Melhorar explicações existentes - Adicionar exemplos práticos - Traduzir termos técnicos - Melhorar a formatação --- ### 4. 🔧 Desenvolver Ferramentas Contribuições técnicas também são valiosas: - Scripts de automação para consultas - Integrações com APIs públicas - Parsers de dados - Ferramentas de validação de links - Conversores de formato **Requisitos:** - Código bem documentado - Instruções claras de uso - Respeitar as limitações das APIs - Incluir avisos sobre LGPD --- ## 🔄 Processo de Pull Request ### Passo a Passo 1. **Fork o Repositório** - Clique em "Fork" no canto superior direito 2. **Clone seu Fork** ```bash git clone https://github.com/SEU-USUARIO/osint-brazuca.git cd osint-brazuca ``` 3. **Crie uma Branch** ```bash git checkout -b minha-contribuicao ``` **Convenção de nomes:** - `adicionar-fonte-X` - para novas fontes - `corrigir-link-Y` - para correções de links - `melhorar-docs-Z` - para melhorias na documentação 4. **Faça suas Alterações** - Edite os arquivos necessários - Siga os padrões de formatação (veja abaixo) - Teste todas as URLs adicionadas 5. **Regenere o Dataset** (se mexeu em fontes ou URLs do README) ```bash python3 tools/build_dataset.py ``` Isso atualiza `data/sources.json` e `data/index.json`. Inclua esses arquivos no commit. Veja a seção [Dataset JSON](#dataset-json) abaixo. 6. **Commit suas Mudanças** ```bash git add . git commit -m "Adiciona fonte de consulta X" ``` **Boas práticas para mensagens de commit:** - Use verbos no imperativo ("Adiciona", "Corrige", "Atualiza") - Seja específico e conciso - Explique o "por quê" se necessário 7. **Push para seu Fork** ```bash git push origin minha-contribuicao ``` 8. **Abra um Pull Request** - Acesse o repositório original no GitHub - Clique em "New Pull Request" - Selecione sua branch - Preencha a descrição detalhadamente **Template para Pull Request:** ```markdown ## Tipo de Mudança - [ ] Nova fonte - [ ] Correção de link - [ ] Melhoria de documentação - [ ] Outra (especifique) ## Descrição Descreva claramente as mudanças realizadas. ## Checklist - [ ] Testei todos os links adicionados - [ ] Segui o padrão de formatação do projeto - [ ] Verifiquei que não há duplicatas - [ ] Rodei `python3 tools/build_dataset.py` e incluí os JSON atualizados - [ ] Li as diretrizes de contribuição - [ ] Minhas mudanças respeitam a LGPD ## Informações Adicionais Qualquer contexto adicional sobre as mudanças. ``` --- ## 🗂️ Dataset JSON O README é a fonte de verdade do catálogo. A pasta `data/` contém uma versão estruturada dele, usada para busca por tipo de entrada e de retorno. ```bash python3 tools/build_dataset.py # regenera o dataset python3 tools/build_dataset.py --report # mostra estatísticas e fontes sem classificação python3 tools/build_dataset.py --check # só verifica se está atualizado ``` Requer apenas Python 3, sem dependências. | Arquivo | O que é | |---|---| | `data/sources.json` | **Gerado.** Uma entrada por fonte, com os links aninhados. Identificada pelo `id`, não por linha do README. | | `data/index.json` | **Gerado.** Um registro por link, achatado para busca. | | `data/taxonomy.json` | Manual. Vocabulário permitido de `input`, `output` e `tipo_fonte`. | | `data/overrides.json` | Manual. Correções de classificação, por fonte. | > [!CAUTION] > Nunca edite `sources.json` ou `index.json` à mão. Eles são sobrescritos no próximo build e seu trabalho é perdido. ### Corrigindo a classificação de uma fonte Os campos `input` (o que a fonte aceita) e `output` (o que ela devolve) não existem no texto do README: são inferidos automaticamente por categoria e palavra-chave. Quando a inferência erra, corrija em `data/overrides.json`: ```json { "overrides": { "apis-publicas-brasileiras/receitaws-api-cnpj": { "input": ["cnpj"], "output": ["api_json", "dados_cadastrais", "socios"], "observacao": "Rate limit de 3 requisições por minuto." } } } ``` A chave é o `id` da fonte, visível em `sources.json`. Campos aceitos: `input`, `output`, `tipo_fonte`, `descricao`, `observacao`. Todo termo é validado contra `taxonomy.json`. Para usar um termo novo, adicione-o lá antes, senão o build falha. Rode `--report` para ver a lista de fontes ainda sem classificação: são as que mais precisam de curadoria. ### Validação automática Todo pull request passa pelo workflow `.github/workflows/validar-dataset.yml`, que falha se: - `sources.json` ou `index.json` estiverem desatualizados (`build_dataset.py --check`) - houver fonte sem nenhum link ou sem classificação (`--report`) - houver travessão (`—`) fora de crases, menu de navegação diferente entre os documentos ou link interno sem âncora (`tools/validar_docs.py`) Para rodar as mesmas verificações antes de cada commit, ative o hook do repositório uma única vez: ```bash git config core.hooksPath tools/hooks ``` ### Ferramentas de curadoria (só local) ```bash python3 tools/validar_docs.py --avisos # lista URLs repetidas em mais de uma fonte e URLs em http:// python3 tools/checar_links.py # testa todas as URLs do catálogo e resume ok/redirect/bloqueio/offline python3 tools/checar_links.py --filtro detran --csv links.csv ``` Esses avisos não bloqueiam o commit: URL repetida pode ser legítima (a mesma consulta em duas categorias) e muitos sites só existem em `http://`. Sites `.gov.br` costumam bloquear robôs (`bloqueio` = 401/403/405/429/503), então confira no navegador antes de reportar um link como quebrado. --- ## 📐 Padrões de Formatação ### Pontuação Não use travessão (`—`) em nenhum texto do projeto. Prefira vírgula, dois-pontos, ponto final ou parênteses. Em títulos de fonte, separe com hífen simples: ```markdown ### IBAMA - Consulta de Autuações Ambientais ``` ### Alertas Para destaques, use os alertas nativos do GitHub em vez de negrito com emoji. Os cinco tipos válidos são `NOTE`, `TIP`, `IMPORTANT`, `WARNING` e `CAUTION`: ```markdown > [!WARNING] > Respeite os limites de requisição das APIs públicas. ``` O marcador fica sozinho na primeira linha e todo o conteúdo seguinte é prefixado com `>`. Use com parcimônia: alerta em excesso perde o efeito. O menu de navegação no topo de cada documento é um bloco de badges centralizado (`

` com badges do shields.io), idêntico em todos os arquivos: ao alterar um item do menu, replique a mudança em todos os documentos. ### Estrutura de Seções ```markdown ### Nome da Fonte Descrição objetiva da fonte, explicando que tipo de informação pode ser consultada.

Links de pesquisa - https://exemplo1.gov.br/ - https://exemplo2.gov.br/
``` ### Para Fontes Únicas (sem details) ```markdown ### Nome da Fonte Descrição da fonte. - https://exemplo.gov.br/ ``` ### Para APIs ```markdown ### Nome da API Descrição da API e seus recursos. **Documentação:** https://api.exemplo.gov.br/docs **Requisitos:** - Autenticação: Chave API (solicitar em: link) - Rate Limit: X requisições/minuto - Formato: JSON
Exemplo de uso ```python import requests url = "https://api.exemplo.gov.br/v1/consulta" headers = {"Authorization": "Bearer SUA_CHAVE"} response = requests.get(url, headers=headers) print(response.json()) ```
``` ### Para Listas por Estado ```markdown ### Consulta por Estado
Links por estado **São Paulo:** - Portal: https://sp.gov.br/consulta **Rio de Janeiro:** - Portal: https://rj.gov.br/consulta
``` --- ## ✅ Checklist Antes de Submeter Antes de enviar seu Pull Request, verifique: - [ ] **Contexto brasileiro** - É relevante para o Brasil? - [ ] **Testei todos os links** - Todos funcionam? - [ ] **Não há duplicatas** - Já existe no README? - [ ] **Formatação correta** - Segue os padrões? - [ ] **Descrição clara** - É fácil entender? - [ ] **Categoria apropriada** - Está na seção certa? - [ ] **Fonte pública** - É de acesso público? --- ## 🚫 O Que NÃO Será Aceito > [!CAUTION] > Pull requests com qualquer um dos itens abaixo são recusados sem análise adicional. - ❌ Links fora do contexto brasileiro - ❌ Links fora do contexto proposto - ❌ Links para foruns de fraud / exploits - ❌ Conteúdo discriminatório - ❌ Links afiliados ou spam - ❌ Ferramentas pagas sem versão gratuita (exceto se oficial) --- ## 🏆 Reconhecimento Todos os contribuidores serão: - Listados na seção de **Contribuições** do README - Creditados no histórico do Git - Mencionados nas releases quando aplicável --- ## 📞 Dúvidas? Se tiver dúvidas sobre como contribuir: 1. **Leia a documentação:** README.md, GUIA_RAPIDO.md 2. **Consulte Issues existentes:** Alguém já teve a mesma dúvida? 3. **Abra uma Discussion:** Para perguntas gerais 4. **Abra uma Issue:** Para problemas específicos --- ## 📜 Código de Conduta Ao contribuir, você concorda em: - ✅ Ser respeitoso com outros contribuidores - ✅ Aceitar críticas construtivas - ✅ Focar no melhor para a comunidade - ✅ Demonstrar empatia com outros membros - ✅ Respeitar diferentes pontos de vista --- ## 🎓 Primeiras Contribuições Novo em contribuições open source? Sem problema! **Boas primeiras contribuições:** - Corrigir erros de digitação - Atualizar links quebrados - Melhorar descrições existentes - Adicionar exemplos práticos **Issues marcadas com:** - `good first issue` - Boas para iniciantes - `help wanted` - Precisam de ajuda - `documentation` - Relacionadas a documentação ---

Obrigado por contribuir com o OSINT Brazuca! 🇧🇷
Juntos estamos construindo a maior base de conhecimento OSINT do Brasil