Sobre o projeto

craft (anacraft) é uma ferramenta de linha de comando escrita em Rust que configura o Google Analytics 4 para um domínio e lê as métricas resultantes como um dashboard de terminal. Sua linguagem visual é temática de Minecraft: barras com texturas de minérios, sete painéis ao vivo, um feed de eventos em tempo real e notificações de conquistas, com paletas selecionáveis incluindo osaka-jade (padrão), catppuccin, github, tokyo-night e catppuccin-latte. O comando é craft; anacraft é instalado paralelamente como um alias. Instalação e uso básico - Um script de instalação é fornecido por anacraft.dev e coloca o binário em /usr/local/bin quando gravável, caso contrário em ~/.local/bin, sem sudo; INSTALL_DIR seleciona outro local. Builds de código-fonte usam cargo install --git, e binários pré-compilados são publicados nos GitHub Releases do projeto. - Executar anacraft sem comando abre o dashboard (dash é o padrão). Sem uma propriedade salva, ele funciona com dados sintéticos, permitindo testes antes do login. - Caminho de início rápido: craft configure para um novo domínio, ou craft login seguido de craft props e craft use para anexar uma propriedade existente. - Relatórios de disparo único imprimem e encerram: overview, pages, portals (fontes de tráfego), realms (países), live e demo, com opções --days e --theme. - Duas flags globais: --property seleciona uma propriedade diferente do padrão salvo; --theme substitui a paleta para uma única execução. Formatos de saída para scripting o comando overview aceita --format json (um objeto rotulado com unidades, período anterior, alteração percentual, série diária de usuários e conquistas) ou --format slack (um payload Block Kit). Ambos imprimem apenas o payload, permitindo que um resumo semanal seja uma única linha de cron enviada para um webhook. Nenhum dos formatos requer assinatura. Dashboard Sete painéis podem ser alternados com as teclas 1 a 7 (ou atalhos de letras), e os painéis restantes se reorganizam para preencher o terminal: EVENTS, RIGHT NOW (jogadores ao vivo e feed de eventos), COUNTRIES (gráfico de mapa mundi), TOP PAGES, VITALS (usuários, sessões, visualizações, conversões, taxa de rejeição, sessão média), TOP COUNTRIES e DAILY USERS. Outros controles incluem tab para alternar propriedades, shift-D para esquecer a propriedade na tela localmente, t para alternar e salvar uma paleta, r para forçar a atualização, sobreposição de ajuda e sair. Alertas o craft watch compara o dia completo mais recente com a média dos dias precedentes e relata desvios além de limites por métrica derivados do histórico do próprio site. Ele sinaliza quedas, picos e "silêncio" (uma contagem que cai para zero contra uma linha de base não zero, como em uma tag removida). Os padrões diferem por métrica (por exemplo, 30 por cento para usuários e sessões, 40 por cento para conversões, 20 por cento para taxa de rejeição); os limites e o comprimento da linha de base podem ser ajustados por propriedade na configuração, e uma linha de base abaixo de um mínimo configurável nunca dispara um alerta de contagem. Os alertas trazem o valor da métrica, movimento, linha de base e um sparkline, e nomeiam um canal dominante apenas quando este representa uma grande parte da mudança. O estado é mantido em ~/.anacraft/watch.json indexado por dia para que o mesmo dia alerte apenas uma vez; os códigos de saída são 0 para nada disparado, 2 para um alerta e 1 para erro. As opções de entrega incluem --every para verificações repetidas e --webhook para POSTing; craft slack --install guia através da tela de instalação do Slack e salva a URL do incoming-webhook, usando o escopo mais restrito que posta no canal escolhido. Servidor MCP para assistentes o craft mcp expõe os relatórios via Model Context Protocol, permitindo que o Claude Desktop, Claude Code ou outros clientes MCP respondam a perguntas sobre um site. craft mcp --install escreve (e --uninstall remove) uma entrada de servidor na configuração do cliente; o Claude Code usa claude mcp add. As ferramentas incluem site_status, live_visitors, list_pages, list_events, list_referrers, list_traffic_sources, list_countries, list_properties, search_pages, search_events e configure_site. O configure_site é descrito como o único escritor, criando uma propriedade e um web stream para um domínio não rastreado e retornando a tag; login e seleção de propriedade permanecem como comandos exclusivamente humanos. As respostas são JSON estruturado rotulado com o id da propriedade e a janela de data coberta, e relatórios idênticos são armazenados em cache por cerca de um minuto para limitar o uso da cota da API. Configuração e credenciais Propriedades e suas configurações ficam em ~/.config/anacraft/config.toml (XDG_CONFIG_HOME é respeitado), enquanto o token de atualização OAuth é deliberadamente mantido fora desse diretório em ~/.anacraft/token.json. Múltiplas propriedades se acumulam na configuração e são alternadas com tab, com a última visualizada ao sair tornando-se a ativa. A ordem de resolução é --property, depois ANACRAFT_PROPERTY_ID, depois a propriedade ativa salva. Outras variáveis de ambiente incluem ANACRAFT_WEBHOOK e, para usar um cliente OAuth do Google Cloud pessoal em vez do integrado, ANACRAFT_OAUTH_CLIENT_ID e ANACRAFT_OAUTH_CLIENT_SECRET. Requisitos e notas do projeto Uma propriedade GA4, um terminal truecolor e, para builds de código-fonte, Rust 1.74 ou superior são listados como requisitos. O repositório é licenciado sob a Apache License 2.0 e inclui orientações de contribuição; cargo run -- dash --demo fornece um dashboard funcional sem conta do Google, e uma skill do Claude Code é fornecida em .claude/skills/anacraft/. Contexto comercial Várias capacidades estão vinculadas a planos pagos (referidos como Anacrafter e níveis acima, começando em 2,99 por mês na página de preços do projeto): craft configure, entrega de alertas watch para o Slack e o servidor MCP. Modos de demonstração para o dashboard, watch e o servidor MCP funcionam sem conta ou assinatura, e os formatos de relatório JSON e Slack para overview não necessitam de assinatura. Quando falta um plano ou login, o servidor MCP ainda inicia e suas ferramentas informam o que é necessário em vez de encerrar.