Como ler: a fase 1 vai da esquerda para a direita. O ESCOPO abre um subagente por fonte (caixas pulsando, em paralelo); o que deu certo vira arquivo no raw com linha no manifesto, o que falhou vira linha no relatório. Só a caixa iluminada decide se acabou. O módulo 2.1 ensina os coletores; o 2.2, o manifesto, as falhas e o "pronto".
Mapa da trilha
Conteúdo detalhado
📥 Fontes e coletores
Os tipos de fonte, os quatro coletores do kit e a ordem que poupa tempo e dinheiro: legenda, depois transcritor local, depois exportação manual.
A classificação das fontes do ESCOPO (vídeo, página/guia, repositório, exportação) e o coletor que atende cada uma, todos gravando em raw/ com uma linha no manifesto.
O mentor não lê a internet na hora de ensinar; ele lê o acervo. Fonte fora do acervo simplesmente não existe para ele.
Acervo · raw · coletor · manifesto · no piloto, 14 lives + 8 guias.
Buscar a legenda que o vídeo já tem com yt-dlp --skip-download, sem baixar o vídeo, antes de pensar em transcrever.
No piloto, 13 lives vieram por legenda em 1,6 min (169.937 palavras); uma única live transcrita localmente levou 7,7 min.
Legenda automática · VTT/SRT · idiomas_legenda · plano A antes do plano B.
O campo transcrever_cmd do mentor.config.json: qualquer comando seu, com os marcadores {url} e {saida}, que deixa um .txt/.srt/.vtt na pasta indicada.
Vídeo sem legenda não precisa virar perda nem custo: o transcritor local resolve, desde que tenha teto de memória e de tempo.
Transcritor plugável · placeholders · MemoryMax · timeout_video_s.
coletar_web.py extrai o texto da página sem navegação e rodapé; coletar_repo.py junta docs e comentários de topo de um clone raso.
Menu e rodapé no acervo viram ruído na wiki. E página com menos de 80 palavras é sinal de paywall ou JavaScript: melhor saber na hora.
Só http/https · limite de 80 palavras · comentário de topo · guias INEMA de 885 a 1.427 palavras.
Usar a exportação oficial da plataforma e entregar o arquivo de texto ao coletar_arquivo.py, com --tipo e --origem.
A skill de coleta proíbe API paga sem autorização explícita (serviço + finalidade). O caminho manual mantém custo zero e origem rastreável.
API paga · autorização explícita · --origem vira o campo url · só arquivos de texto.
Um comando pronto por coletor, cada um com objetivo e forma de verificar, todos fechando com python3 tools/stats.py.
Rodar à mão uma vez é o jeito de entender o que a skill de coleta vai pedir aos subagentes, e de reconhecer uma saída errada.
Rodar de novo é seguro ("já coletado") · exit 1 se uma fonte falhou · ok com número de palavras.
🧾 Subagentes, manifesto e falhas
Um subagente por fonte, o manifesto com sha256, o relatório de falhas, as metas do stats.py e os dois bugs reais do piloto que viraram o kit 1.2.
A skill /<slug>-coletar dispara um subagente para cada fonte, ao mesmo tempo, e junta só os resultados na sessão principal.
Fonte lenta não segura as rápidas e o barulho do download não enche o contexto. Mas o paralelo cobra: todos escrevem no mesmo manifesto.
Subagente · paralelo · skill · trava de arquivo.
A lista oficial do acervo: para cada item, tipo, url, arquivo, data, palavras e o sha256 calculado na hora da coleta.
O sha256 é o que permite provar, nas trilhas 3 e 4, que a wiki e as citações vêm de um raw que ninguém mexeu.
Impressão digital · url = chave de "já coletado" · arquivo = chave de atualização.
Uma tabela em raw/ com data, tipo, origem e motivo de cada fonte que não deu texto. Tem de existir mesmo vazia.
No piloto, a única linha ("sem legenda") levou a preencher o transcritor e recuperar 8.045 palavras que teriam ficado de fora.
Histórico, não pendência · nunca apagar a linha · prova de que foi olhado.
Metas de itens e palavras por tipo no config, conferidas pelo stats.py junto com o sha256 de cada arquivo e a existência do relatório.
No piloto, 6 guias deram 7.269 palavras contra 8.000: exit 1. Com +1 guia e a transcrição, 21 itens e 187.382 palavras: exit 0.
Exit code · metas_coleta · calibrar a meta depois de listar as fontes · "faltam N palavras".
O manifesto do kit 1.1 era regravado inteiro sem trava; o agente percebeu que coletas em paralelo apagariam itens umas das outras e rodou em sequência.
Condição de corrida perde dados em silêncio. O kit 1.2 ganhou trava de arquivo e escrita atômica, com teste de 12 coletas simultâneas.
Ler-alterar-gravar · condição de corrida · flock · os.replace.
A transcrição local foi salva com o nome que o transcritor deu; a próxima live transcrita gravaria por cima e o manifesto perderia o item.
Gravidade alta no diário do piloto. Agora o nome é título + ID do vídeo (ou hash da URL) — e o transcript.txt original segue no raw como evidência.
Perda silenciosa · nome único por fonte · yt-dlp --print · raw imutável.