auditreach
CLI de pesquisa BYOK para Reddit/YouTube com log de auditoria à prova de adulteração e um servidor MCP.
Documentação
auditreach
Instalação • O que faz • Começando • Comandos • Segurança • FAQ
Pesquise no Reddit e no YouTube a partir do seu agente de IA usando apenas APIs oficiais, suas próprias chaves e um log que comprova exatamente o que você consultou e por que foi permitido.

Instalação
O auditreach é distribuído como dois pacotes independentes e igualmente de primeira classe: um pacote npm (este repositório, JavaScript/TypeScript) e um pacote PyPI (python/, Python). Ambos implementam o mesmo algoritmo de cadeia de hash e o modelo BYOK contra as mesmas APIs oficiais do Reddit/YouTube. Escolha o que melhor se adapta à sua ferramenta, ou instale ambos.
npm:
npx auditreach-cli search --platform reddit --query "your query"
Ou instale globalmente:
npm install -g auditreach-cli
auditreach search --platform reddit --query "your query"
pip:
pip install auditreach-cli
auditreach search --platform reddit --query "your query"
Consulte python/README.md para uso específico em Python, incluindo o caminho de credenciais BYOK por variável de ambiente adicionado nesta distribuição (útil para sandboxes headless de CI/agentes) — o pacote npm armazena credenciais apenas no chaveiro do sistema operacional.
Compilar a partir do código-fonte funciona da mesma forma, se você quiser ler ou modificar o código primeiro:
git clone https://github.com/RudrenduPaul/auditreach.git
cd auditreach
npm install
npm run build
node dist/cli.js search --platform reddit --query "your query"
O que faz
node dist/cli.js search --platform reddit --query "agent memory poisoning" --subreddit MachineLearning
AuditReach -- CLI de Pesquisa via API Oficial
Plataforma: Reddit | Autenticação: concessão de script-app OAuth, somente leitura, escopo de subreddit público
Buscando... (API oficial, ciente de limite de taxa)
✓ 14 resultados retornados (Termos da API do Reddit — conteúdo público, API oficial, credenciais de script-app somente leitura)
RESULTADOS (14)
[1] "Como as pessoas estão testando envenenamento de memória em agentes de longa duração?"
u/some_researcher · 2026-07-05T14:22:00.000Z
https://reddit.com/r/MachineLearning/comments/...
...
Entrada de log de auditoria gravada: ar_2026-07-12_9f3c2a
Base de consentimento: Termos da API do Reddit — conteúdo público, API oficial, credenciais de script-app somente leitura
Resultados completos: ./auditreach-results-2026-07-12.json
Trilha de auditoria completa: ./auditreach.log.jsonl
Cada entrada em auditreach.log.jsonl é encadeada por hash — o hash de cada entrada é calculado a partir do seu próprio conteúdo, e a próxima entrada faz referência a ele. Editar, excluir ou reordenar uma entrada quebra a cadeia:
$ node dist/cli.js verify-log
Verificando ./auditreach.log.jsonl...
✓ Cadeia intacta: 14 entradas, sem lacunas, nenhuma adulteração detectada.
# depois que alguém edita manualmente uma linha no arquivo de log:
$ node dist/cli.js verify-log
Verificando ./auditreach.log.jsonl...
✗ Cadeia quebrada na entrada 3 (ar_2026-07-12_9f3c2a): o hash da entrada ar_2026-07-12_9f3c2a não
corresponde ao seu próprio conteúdo — a entrada foi editada após ser gravada

Como se compara
| auditreach | Agent-Reach | snoowrap | |
|---|---|---|---|
| Modelo de acesso | Somente API oficial, chave própria | Importação de cookie/sessão, "zero taxas de API" | API oficial, chave própria |
| Cobertura de plataformas | Reddit, YouTube | Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu | Somente Reddit |
| Log de consentimento/auditoria | Encadeado por hash, por consulta, local | Nenhum | Nenhum |
| Status de manutenção | Ativo (esta versão) | Ativo, 65k+ estrelas | Arquivado desde fev/2023 |
| Licença | Apache 2.0 | MIT | MIT |
| Dependências de runtime (cliente Reddit) | 0 — fetch nativo | n/d (Python, baseado em sessão de navegador) | request, request-promise, ws (todos descontinuados) |
Números medidos diretamente contra os metadados públicos do GitHub de cada repositório e, para a comparação de dependências, contra o package.json publicado pelo próprio snoowrap no momento desta redação — reproduzível por qualquer pessoa com gh api repos/<owner>/<repo>.
Começamos a construir o cliente Reddit do auditreach sobre o snoowrap, o wrapper de API do Reddit mais usado no ecossistema Node. Instalá-lo puxa request, request-promise, form-data e har-validator — uma cadeia de dependências que atualmente carrega 2 avisos de severidade CRÍTICA, 2 ALTA e 5 moderada (9 no total, conforme npm audit), nenhum dos quais o snoowrap pode corrigir porque o projeto está arquivado desde 2023. Reescrevemos o cliente Reddit como um cliente OAuth2 direto baseado em fetch contra os endpoints REST documentados do próprio Reddit: mesma funcionalidade, nenhum desses CVEs, zero dependências extras de runtime para esse cliente. Consulte Segurança para o status atual do npm audit do próprio auditreach.
Por que o auditreach existe
Uma consultoria com quem conversamos tinha um agente de pesquisa de IA coletando sentimento social para um relatório de cliente. Funcionava bem até o time jurídico do cliente pedir, por escrito, qual era a autoridade da coleta de dados. A resposta honesta foi "uma sessão de cookie de navegador", porque a ferramenta que usavam autentica importando uma sessão logada e fazendo scraping como se fosse um usuário real. Isso funciona. Mas também não é uma resposta que você pode colocar em um memorando de conformidade, e é exatamente o padrão pelo qual o Reddit processou a Anthropic e a SerpApi em 2025, e o mesmo padrão que fez o Reddit derrubar o acesso à API pública do Pushshift em 2024.
O Agent-Reach não é uma ferramenta ruim. Ele tem tração real (65k+ estrelas) porque scraping baseado em cookie genuinamente cobre mais terreno do que qualquer API oficial hoje, a custo zero de API. Mas "cobrir mais terreno" e "o cliente de uma agência passar por uma revisão de conformidade" são padrões diferentes, e nada foi construído especificamente para superar o segundo.
O auditreach é o CLI que gostaríamos que existisse. Ele fala com Reddit e YouTube apenas por meio de suas APIs oficiais e documentadas, usando suas próprias chaves de API — nunca um pool compartilhado — e cada consulta grava uma entrada encadeada por hash em um log de auditoria local: qual plataforma, qual endpoint, qual escopo e uma linha em linguagem simples explicando a base de consentimento/ToS para aquela chamada específica. Sem importação de cookie. Sem reutilização de token de sessão. Nenhum caminho de código que possa sequer fingir ser um humano logado.
Não estamos tentando superar a cobertura de seis plataformas do Agent-Reach. O auditreach é mais restrito de propósito, para o comprador que estruturalmente não pode usar uma ferramenta baseada em cookie.
Começando
1. Instale: veja Instalação acima — npx auditreach-cli, npm install -g auditreach-cli, ou clone e compile a partir do código-fonte.
2. Configure as credenciais para a plataforma que deseja pesquisar (BYOK — suas próprias, nunca as nossas):
node dist/cli.js auth --platform reddit
# Solicita Client ID, Client secret, nome de usuário e senha.
# Crie um script-app em https://www.reddit.com/prefs/apps primeiro.
node dist/cli.js auth --platform youtube
# Solicita uma chave de API.
# Crie uma em https://console.cloud.google.com/apis/credentials
Todas as credenciais são armazenadas no chaveiro do seu sistema operacional (@napi-rs/keyring), nunca em um arquivo de configuração, e nunca transmitidas para qualquer lugar exceto o endpoint oficial de autenticação da própria plataforma. Depois de configuradas, verifique-as sem executar uma pesquisa real:
node dist/cli.js auth --platform reddit --verify
3. Pesquise:
node dist/cli.js search --platform reddit --query "sua consulta" --subreddit algum_subreddit
node dist/cli.js search --platform youtube --query "sua consulta" --channel @AlgumCanal
Nota honesta sobre o tempo de configuração: obter suas próprias credenciais de API do Reddit e do Google leva alguns minutos na primeira vez — isso é mais lento que o fluxo de importação de cookie do Agent-Reach (que apenas reutiliza uma sessão de navegador que você já tem) por design. BYOK significa que o custo de configuração é real, não oculto.
Comandos
auditreach tem quatro subcomandos. Cada flag abaixo é extraída diretamente da saída do próprio --help do CLI, não de memória do que ele costumava suportar.
auditreach search
Pesquise uma plataforma usando apenas sua API oficial.
| Flag | Descrição |
|---|---|
--platform <platform> | reddit | youtube (obrigatório) |
--query <query> | consulta de pesquisa (obrigatória) |
--subreddit <subreddit> | restringir pesquisa a um subreddit (somente Reddit) |
--channel <handle> | restringir pesquisa a um canal, ex.: @AnthropicAI (somente YouTube) |
--since <date> | apenas resultados publicados após esta data, ex.: 2026-06-01 (somente YouTube) |
--max-results <n> | máximo de resultados a retornar (padrão: 25; limites da plataforma: 100 Reddit / 50 YouTube) |
--before <fullname> | paginar resultados antes deste cursor fullname do Reddit, ex.: t3_abc123 (somente Reddit) |
--after <fullname> | paginar resultados depois deste cursor fullname do Reddit, ex.: t3_abc123 (somente Reddit) |
--output <path> | gravar o JSON completo dos resultados neste caminho |
--json | imprimir JSON estruturado no stdout em vez de saída legível, para scripts e chamadas de agente |
node dist/cli.js search --platform reddit --query "agent memory poisoning" --subreddit MachineLearning --max-results 50
node dist/cli.js search --platform reddit --query "agent memory poisoning" --json | jq '.results | length'
auditreach auth
Configure, verifique ou limpe credenciais BYOK para uma plataforma (armazenadas no chaveiro do seu sistema operacional).
| Flag | Descrição |
|---|---|
--platform <platform> | reddit | youtube (obrigatório) |
--clear | excluir credenciais armazenadas para esta plataforma |
--verify | verificar se as credenciais armazenadas são válidas sem executar uma pesquisa (sem arquivo de resultados, sem entrada no log de auditoria) |
--json | com --verify, imprimir um resultado JSON estruturado em vez de texto legível |
node dist/cli.js auth --platform reddit --verify
auditreach verify-log
Verifique se o log de auditoria local encadeado por hash não foi adulterado.
| Flag | Descrição |
|---|---|
--path <path> | caminho para o arquivo de log de auditoria (padrão: ./auditreach.log.jsonl se omitido) |
node dist/cli.js verify-log --path ./auditreach.log.jsonl
auditreach mcp
Execute um servidor Model Context Protocol via stdio (construído sobre o @modelcontextprotocol/sdk oficial), expondo exatamente 3 ferramentas para que um agente de IA possa chamar esta CLI diretamente, em vez de executar comandos externos e analisar a saída padrão:
| Ferramenta | Equivalente a | Observações |
|---|---|---|
search | auditreach search --json | Mesmos parâmetros: platform, query, subreddit/channel, since, maxResults, before/after |
auth_status | auditreach auth --platform <p> --verify --json | Somente leitura. Verifica se as credenciais armazenadas são válidas — não pode defini-las ou limpá-las |
verify_log | auditreach verify-log --json | Mesmos parâmetros: path |
node dist/cli.js mcp
# ou, após a publicação: npx auditreach-cli mcp
Adicione-o à configuração do seu cliente MCP (para Claude Desktop, claude_desktop_config.json). Qualquer
distribuição funciona, pois ambas incluem o mesmo subcomando mcp:
{
"mcpServers": {
"auditreach": {
"command": "npx",
"args": ["-y", "auditreach-cli", "mcp"]
}
}
}
ou, a partir do pacote PyPI:
{
"mcpServers": {
"auditreach": {
"command": "uvx",
"args": ["--from", "auditreach-cli", "auditreach", "mcp"]
}
}
}
Configurar ou limpar credenciais BYOK (auditreach auth --platform <p> / --clear) é deliberadamente não exposto via MCP — isso permanece uma ação local da CLI, conduzida por humanos, para que um agente chamador possa verificar se as credenciais funcionam, mas nunca possa provisioná-las ou apagá-las por conta própria. Consulte .well-known/agent.json para o manifesto legível por máquina (requisitos de autenticação, esquemas de ferramentas, comandos de invocação) que um agente ou registro de agentes pode ler para descobrir este servidor sem que um humano leia o README primeiro.

Execute auditreach <command> --help a qualquer momento para ver as flags exatas que sua versão instalada suporta.
Referência da API da biblioteca
auditreach-cli também funciona como uma biblioteca importável. Cada exportação abaixo vem diretamente de dist/index.d.ts no pacote publicado.
import {
RedditClient,
YoutubeClient,
getCredential,
setCredential,
deleteCredential,
getRedditCredentials,
getYoutubeCredentials,
appendAuditLogEntry,
getLastEntryHash,
computeEntryHash,
verifyAuditLogChain,
credentialFingerprint,
canonicalJson,
sha256Hex,
DEFAULT_AUDIT_LOG_PATH,
executeSearch,
SearchCommandError,
checkAuthStatus,
executeVerifyLog,
buildMcpServer,
runMcpServerCommand,
} from "auditreach-cli";
Clientes
new RedditClient(credentials: RedditCredentials)— fala apenas com a API OAuth oficial do Reddit, usando a concessão de senha (fluxo "script app")..search(options: RedditSearchOptions): Promise<SearchOutcome>,.verifyCredentials(): Promise<void>.new YoutubeClient(credentials: YoutubeCredentials)— encapsula a API oficial YouTube Data API v3..search(options: YoutubeSearchOptions): Promise<SearchOutcome>,.verifyCredentials(): Promise<void>(uma chamada de 1 unidade de cota, sem necessidade de consulta).
const credentials = getRedditCredentials();
if (!credentials) throw new Error("run `auditreach auth --platform reddit` first");
const client = new RedditClient(credentials);
const outcome = await client.search({
query: "agent memory poisoning",
subreddit: "MachineLearning",
});
Credenciais (setCredential / getCredential / deleteCredential / getRedditCredentials / getYoutubeCredentials) — toda entrada/saída de credenciais passa por este módulo. É o único lugar permitido a tocar em um segredo bruto; os valores retornam apenas para serem entregues diretamente ao construtor de um cliente, nunca para registro ou impressão.
Log de auditoria
appendAuditLogEntry(entryWithoutHash: UnhashedAuditLogEntry, logPath?: string): Promise<AuditLogEntry>— o único caminho de escrita no log; as entradas nunca são editadas ou excluídas no local.getLastEntryHash(logPath?: string): Promise<string | null>computeEntryHash(entry: UnhashedAuditLogEntry): stringverifyAuditLogChain(logPath?: string): Promise<ChainVerificationResult>— recalcula o hash de cada entrada e verifica a cadeia de ponta a ponta.DEFAULT_AUDIT_LOG_PATH—"./auditreach.log.jsonl"
const result = await verifyAuditLogChain();
if (!result.valid) {
console.error(`Chain broken at entry ${result.brokenAtIndex}: ${result.reason}`);
}
Utilitários de criptografia
canonicalJson(value: unknown): string— classifica recursivamente as chaves de objetos para que a mesma entrada lógica sempre serialize nos mesmos bytes, dos quais a cadeia de hash depende para verificação determinística.sha256Hex(input: string): stringcredentialFingerprint(secret: string): string— mantém apenas os últimos 6 caracteres hexadecimais de um hash derivado de scrypt (emitido no log de auditoria comoscrypt:<6 hex>), suficiente para distinguir chaves rotacionadas em um log de auditoria local, nunca suficiente para ser um vazamento parcial de credenciais.
Núcleos de comando e MCP
executeSearch(args),checkAuthStatus(platform),executeVerifyLog(path?)— os mesmos núcleos programáticos que os comandos CLIsearch/auth --verify/verify-loge as ferramentas MCP chamam; nenhum deles escreve no console/saída padrão, então são seguros para chamar de qualquer host, incluindo um que compartilhe a saída padrão com um transporte MCP.SearchCommandError— a classe de erro queexecuteSearchlança para uma falha esperada e acionável pelo usuário: nenhuma credencial BYOK armazenada ainda para a plataforma alvo, ou uma pesquisa do Reddit chamada sem--query. Capture-a especificamente para distinguir "você chamou isso errado" de uma falha real de rede/API.buildMcpServer({ version }): McpServer— constrói o servidor MCP (de@modelcontextprotocol/sdk) com as ferramentassearch/auth_status/verify_logregistradas, sem iniciar um transporte — útil para testes ou incorporação em um servidor MCP maior.runMcpServerCommand({ version })— o queauditreach mcpexecuta: constrói o servidor e o conecta via stdio. Nunca retorna enquanto o servidor está em execução.
Nenhum site de documentação de API gerada existe ainda (nenhuma compilação TypeDoc conectada ao CI) — as exportações acima são a superfície pública completa. Verifique dist/index.d.ts no pacote publicado para tipos exatos.
O pacote Python (auditreach-cli no PyPI) expõe a mesma superfície com nomes snake_case — from auditreach import RedditClient, YoutubeClient, get_reddit_credentials, verify_audit_log_chain, ... — consulte python/README.md para a referência completa da API Python.
Cobertura de plataformas
| Plataforma | API usada | Status | Restrição conhecida |
|---|---|---|---|
| Reddit API (OAuth2 password grant, REST direto) | Enviada | Os limites de taxa são geralmente viáveis para volumes reais de pesquisa | |
| YouTube | YouTube Data API v3 (googleapis) | Enviada | Baseada em cota (10.000 unidades/dia por padrão), geralmente viável |
| X (Twitter) | X API v2 | Ainda não enviada | O preço oficial da API do X e os limites de volume de postagens foram amplamente relatados como proibitivos para pequenas equipes que fazem pesquisas significativas desde as mudanças de preço de 2023. Adiada até que um usuário real precise o suficiente para financiar uma solução para essa restrição — enviá-la meio funcionando prejudicaria toda a premissa de "ser honesto sobre o que as APIs oficiais podem e não podem fazer" na qual esta ferramenta se baseia. |
Limites de resultados
--max-results <n> controla quantos itens uma única chamada search retorna. Deixe-o desativado e o auditreach aplica silenciosamente um padrão de 25 — o mesmo tipo de surpresa que o get_comments() do PRAW teve por anos (praw#119): um chamador que já não sabe passar a flag obtém um conjunto de resultados silenciosamente truncado.
[!NOTE] Uma pesquisa que retorna exatamente o limite aplicado (25 por padrão, ou seu valor
--max-results) pode não ser o conjunto completo de resultados. O auditreach imprime um aviso em stderr quando isso acontece, mas scripts que analisam apenas a saída padrão/--jsonnão o verão — verifique o aviso ou passe um--max-resultsexplícito se a completude for importante.
| Plataforma | Padrão (flag omitida) | Máximo (--max-results) |
|---|---|---|
| 25 | 100 | |
| YouTube | 25 | 50 |
Valores acima do limite são silenciosamente limitados a ele. Para o Reddit, --before/--after permitem paginar pelo conjunto de resultados de uma pesquisa usando o cursor real que a própria resposta do Reddit retorna, até o limite de pesquisa de ~1.000 itens do próprio Reddit (consulte Histórias de sucesso para saber por que a paginação por cursor sozinha não pode ir além disso); o YouTube não tem equivalente ainda. Sempre que o número de itens retornados for igual ao limite realmente aplicado, seja o padrão silencioso ou um valor explícito --max-results, o auditreach imprime um aviso em stderr informando que mais resultados podem existir e como aumentar --max-results (até o limite da plataforma).
O que é uma "base de consentimento", honestamente
O campo consent_basis em cada entrada do log de auditoria nomeia os termos específicos da API da plataforma e o mecanismo de autenticação usado para aquela consulta. Ele certifica que a solicitação passou pela superfície oficial e documentada da API da plataforma sob as credenciais que você forneceu. Ele não certifica que seu caso de uso específico é legalmente suficiente para sua jurisdição ou contrato — essa determinação é sua, informada por um registro preciso, completo e à prova de adulteração do que realmente aconteceu.
Auto-hospedagem / somente local por padrão
Nada no auditreach exige uma conta ou servidor hospedado. Cada comando é executado inteiramente em sua máquina; o log de auditoria é um arquivo simples que você possui. Este é o mesmo fluxo de Instalação acima:
git clone https://github.com/RudrenduPaul/auditreach.git
cd auditreach
npm install
npm run build
node dist/cli.js search --platform reddit --query "..."
Desenvolvimento
TypeScript (este pacote):
npm install
npm run lint # ESLint
npm run format # Verificação Prettier
npm run typecheck # tsc --noEmit --strict
npm run test:coverage # vitest, 91 testes, 95,1% de cobertura de declarações
Python (python/):
cd python
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest # 95 testes
Consulte CONTRIBUTING.md para as regras sobre como adicionar um novo cliente de plataforma — a versão curta: somente API oficial, divulgação honesta de limites de taxa, testes que simulam o limite de rede, nunca nada que leia ou escreva uma credencial bruta fora de src/auth/credential-store.ts (ou python/src/auditreach/auth/credential_store.py no lado Python).
Segurança
Consulte SECURITY.md para a política de divulgação de vulnerabilidades. Uma revisão OWASP/STRIDE pré-lançamento encontrou zero descobertas CRÍTICAS/ALTAS no código do próprio auditreach. ip-address e hono — ambos puxados transitivamente pelo código de transporte HTTP da dependência oficial @modelcontextprotocol/sdk, um caminho que auditreach mcp nunca executa (ele só inicia o transporte stdio do SDK, StdioServerTransport) — anteriormente carregavam avisos; o campo package.json de overrides agora fixa ambos em versões corrigidas. No momento em que este texto foi escrito, npm audit --audit-level=high em uma instalação limpa relata 0 vulnerabilidades. A verificação de segredos do GitHub e a proteção de push estão habilitadas neste repositório.
Histórias de sucesso
Quatro problemas reais relatados contra praw-dev/praw — PRAW, o wrapper oficial da API Python do Reddit, e a coisa mais próxima que este projeto tem de arte anterior — foram diagnosticados na raiz contra o código-fonte do próprio auditreach e usados para fechar lacunas genuínas nesta ferramenta antes que ela tivesse um único usuário externo. Cada linha abaixo está vinculada ao relatório real que a motivou.
- praw#614 (@mananwason) — perguntou como
paginar além do limite de ~1.000 resultados da busca do Reddit. A correção real é mais restrita que isso:
a própria API do Reddit não retorna cursor before/after algum depois que você passa desse limite,
com ou sem paginação baseada em cursor — confirmado diretamente no tópico da issue. O que o
search()realmente faz agora é extrair o cursor real da resposta do Reddit (SearchOutcome.nextCursor) e expor as flags--before/--afterpara que você possa paginar pelos resultados dentro do conjunto limitado de uma única busca, em vez de ver apenas a primeira página. Ir além do limite de 1.000 itens em si exige re-consulta com janela de timestamp via cloudsearch, o que ainda não foi implementado. - praw#1939 (@Auditormadness9) — encontrou
um erro 400 não diagnosticado causado por um nome de subreddit que ainda carregava um prefixo
r/à esquerda. Erros de busca agora identificam essa causa específica quando ela é a provável culpada: antes, a CLI apenas retornava um código de status puro e deixava a suposição por sua conta. - praw#984 (@MaxMatti) — pediu uma
forma simples de verificar se as credenciais do bot do Reddit ainda eram válidas, sem o
confuso workaround de recursão
getMe()do PRAW. Oauditreach auth --platform reddit --verifyfaz exatamente isso agora: uma verificação leve, sem necessidade de busca, nada gravado em disco. - praw#119 (@nsp) — encontrou o
padrão histórico silencioso de 25 resultados do PRAW, descoberto apenas lendo o docstring de uma
classe base não relacionada; o próprio mantenedor do PRAW admitiu que "não tinha certeza da melhor forma de
deixar isso claro." O
--helpe este README agora informam o padrão real e os limites por plataforma, e um aviso em tempo de execução é disparado sempre que uma busca é realmente truncada.
FAQ
O que é auditreach, e o que o torna diferente de outras ferramentas de pesquisa Reddit/YouTube? É uma CLI BYOK (e servidor MCP) que fala com Reddit e YouTube apenas por meio de suas APIs oficiais e documentadas, usando suas próprias chaves de API, e grava uma entrada de log de auditoria com hash encadeado para cada consulta — plataforma, endpoint, escopo e a base específica de consentimento/ToS para aquela chamada. O diferencial é o que ele se recusa a fazer: sem importação de cookies, sem scraping de sessão compartilhada, sem caminho de código que se passe por um usuário logado. Veja Por que auditreach existe para a justificativa completa e Como ele se compara para a tabela contra alternativas nomeadas.
Em quais plataformas e versões o auditreach roda?
O pacote npm (auditreach-cli) requer Node.js 20 ou mais recente (campo engines em package.json). O pacote PyPI (também auditreach-cli) requer Python 3.10+ (requires-python em python/pyproject.toml), que também carrega o classificador Operating System :: OS Independent. As credenciais vão para o chaveiro do seu sistema operacional por meio de @napi-rs/keyring (npm) ou keyring (PyPI) em vez de um arquivo de configuração, então não há configuração específica de plataforma além de ter Node ou Python instalado.
O auditreach armazena minhas credenciais do Reddit ou YouTube em algum lugar?
Não. As credenciais vão direto para o chaveiro do seu sistema operacional por meio de @napi-rs/keyring (src/auth/credential-store.ts). Não há arquivo de configuração, variável de ambiente ou caminho de código que grave uma credencial bruta em disco.
Quantos resultados uma busca retorna por padrão, e posso obter mais?
25, silenciosamente, a menos que você passe --max-results — veja Limites de resultados. O limite máximo é 100 para Reddit e 50 para YouTube. Um aviso em stderr é disparado sempre que uma busca realmente atinge o limite aplicado, seja o padrão silencioso ou um valor explícito que você passou.
Como verifico se minhas credenciais ainda são válidas sem executar uma busca real?
node dist/cli.js auth --platform reddit --verify (ou --platform youtube). Ele realiza a verificação autenticada mínima e informa aprovação ou falha, sem necessidade de --query, sem arquivo de resultados gravado e sem entrada de log de auditoria anexada.
O log de auditoria é realmente à prova de adulteração, ou é apenas um arquivo de log?
À prova de adulteração: o hash de cada entrada é calculado a partir do seu próprio conteúdo e a próxima entrada o referencia, então o verify-log pode apontar para a entrada exata que uma edição manual quebrou. Veja a demonstração em O que ele faz.
Quais são as limitações atuais do auditreach?
Duas que valem a pena conhecer de antemão. Primeiro, X (Twitter) não é incluído — os preços e limites de volume de postagens da API v2 do X são proibitivos para pequenas equipes que fazem pesquisa real desde as mudanças de 2023; veja Cobertura de plataformas. Segundo, paginação do Reddit: o search() lê o cursor real after/before da própria resposta do Reddit e expõe as flags --before/--after para paginar pelo conjunto de resultados de uma única busca, mas isso não leva você além do limite de ~1.000 itens da própria busca do Reddit — veja a história de sucesso do praw#614 para o que a correção cobre e o que não cobre.
Como funciona o modo de servidor MCP?
auditreach mcp (npm) ou pipx run auditreach-cli mcp (PyPI) inicia um servidor Model Context Protocol via stdio, construído sobre os SDKs oficiais @modelcontextprotocol/sdk / mcp. Ele expõe exatamente 3 ferramentas — search, auth_status (somente leitura, não pode definir ou limpar credenciais) e verify_log — cada uma um wrapper fino em torno do mesmo núcleo programático que os comandos da CLI usam, então nada é reimplementado para o caminho do agente. Veja auditreach mcp acima para a tabela completa de ferramentas e .well-known/agent.json para o manifesto legível por máquina que um registro de agentes pode ler diretamente.
Como o auditreach se compara especificamente ao Agent-Reach? O Agent-Reach cobre mais plataformas (seis, contra duas do auditreach) importando uma sessão de navegador logada e fazendo scraping como esse usuário, a custo zero de API. O auditreach apenas chama APIs oficiais e documentadas com suas próprias chaves e grava uma entrada de consentimento/auditoria com hash encadeado por consulta; ele não tem nenhum caminho de código de importação de sessão. Nenhuma abordagem é estritamente melhor — elas são feitas para compradores diferentes. Veja Como ele se compara para a comparação lado a lado completa.
O auditreach é gratuito para uso comercial, e o que a licença realmente exige?
Sim. O auditreach é Apache 2.0 (veja LICENSE), que permite uso comercial, modificação e redistribuição, inclusive como parte de um produto de código fechado. As condições são: incluir uma cópia da licença com qualquer coisa que você redistribuir, marcar quaisquer arquivos que você modificou e manter os avisos existentes de copyright/atribuição. Ela não concede direitos ao nome ou marcas registradas do auditreach.
Contribuindo
Veja CONTRIBUTING.md para as regras sobre adicionar um novo cliente de plataforma. Versão resumida: apenas API oficial, divulgação honesta de limites de taxa, testes que simulam o limite de rede, nunca um caminho de código que leia ou grave uma credencial bruta fora de src/auth/credential-store.ts.
Licença
Apache 2.0. Veja LICENSE.