K
Kodama Vault
knowledge hub
Vault
HomeBoardMap of ContentChatConversasAuditoria
Agentes
AgentsIssuesCriar IssueTerminalPreviews
Sistema
MCPSetup MCPSettings
Brain
amazon-arb-scoutcode-standards-auditordesign-master (subagent)erica-nardi-auditorfeature-auditorGlobal agent instructionskodama-hub-auditorAgente: kodama-hub-launch-qalanding-page-architect (subagent spec)meta-campaign-builder (subagent spec)need-context-auditorprospek-blog-auditor — gate editorial do blog do Prospekprospek-blog-author — autor do blog do Prospekprospek-campaign-manager — gerente de campanhas do Prospekprospek-content-director — diretor de conteúdo diário do blogProspek Demo RecorderSubagent — prospek-marketing-creativeprospek-qaprospek-social-producerprospek-social-publisherprospek-social-strategistroblox-sim-buildersageland-auditor (subagent spec)seo-geo-optimizerteam-leadervek1-auditor — subagent specvek1-styleguide-auditor
Análise custos migração — evitar senha no payloadLevantamento fluxo registro + duplicados StripeRelatório segurança + pentes finos (Cláudio)Revisão security concerns e race conditionsMagic link / esqueceu senha via SupabaseCorrigir erros pós-upgrade TypeScriptTestar PRs do agente Vault para mergeAnálise de 3 issues para iniciarErro no terminal do VSCodePR #173 — aguardando aprovação do LeoTestar fluxo ponta a ponta — criação de clients no StripePR #172 — testar e subir correção de funções deprecatedPitch de vendas SaaS — agendar call de conversãoOrganizar issues e bugs rápidos para a semanaMerge PR cadastro-novo — funcionalidades e correçõesCorrigir bugs PR #173 e #172 — image domainsPR mesosóico — página de acesso mobile + segurança OTPRefatoração de códigos — PR #202Ajustes em PRs abertos de ontemEstudo de jornada de compra e técnicas de fechamentoDefinir preço e entregável do produtoProspecção de reuniões para esta semanaAgente anti AI slop — centralização de conhecimento ConnfitPR #179 — resolver conflitos e erros de teste CLIAlinhamento de preços e usos da ConffitFix adicional para PR #183 — perfil do usuárioCorrigir estilização da Connfit para identidade visualSubir modificações no copy da ConnfitCriação de 4 campanhas no Meta AdsRevisão de PRs do GilinesExploração do Roblox EditorRelatório João — devolutiva TikTok ShopReunião presencial Zassi Uniformes — diagnóstico automaçõesCriar repositório de diagnósticos e relatórios de entrevistasDiagnóstico da ZassiGeração de relatórios para reuniões de fechamentoProposta Zassi — apresentação amanhãProspecção — Clínica Odontológica Dr. ButAlinhamento com ADRIANO sobre produtos e simulaçãoCombinar com Lauro os produtos do diagnósticoSolicitar recursos (vbucks) à INEDIA/ObiettoAnálise de issues do Kodama-Hub e início pelo vaultIssue KH03 — estudo de abordagem DockerKH-12 — script de correção e PR no kodama-hubTeste de despacho e agentes da vaultRemover issues 7, 9 e 10 do fluxo de trabalhoKH-15 — testar e preparar para Gilini testar em prod (Kodama Hub)VEK-1 — testar no WhatsAppBot local — testar localmenteEscrever issues para replicação do modelo de LPSwarm — modelar landing pages para tecnologias concorrentes (Google Ads)Configurar Docker no Windows para tarefas do Hub LisaLP de Suplementos — iniciar issue #96 (Vek)PR #93 git — subir para testar em prodPR #94 git — despachar agents pelo vaultTestes e documentação de bugs no site VEKPR #98 de LP — cosméticosRemover issues concluídas do board (#5, #10, #11, #12, #13)PRs de comparação vek1 vs LPs — correções e mergeDocumentação de uso e bugs na Vek1Criação de issues via Vault — bugs VekFix bug redirect botão Produtos na sidebar colapsada (vek)Planejamento de issues e mini sprint no site da Vek1facilitabusca — cron de fetch parado desde 05/08 (RESOLVIDO 11/08)
kodama-watchdog — self-heal + alerta pra todos os projetos da VPS HermesVPS Hermes — acesso e estrutura
Memory namespacing (multi-user)
OpenSpec -- Spec-Driven Development no VaultPlano de Teste — OpenSpec Vault Persistence
CaumzitoNyxzZanini
Sessions — swarmSwarm — arquitetura targetCakto SPA — integração via Bearer + cookiesswarm — contextoSwarm — convenções de código e operaçãoswarm — dashboard (arquitetura)Swarm session 2026-05-31 — Phase 1 PT-BR live + Meta campanha ATIVA + CAPISwarm session 2026-06-01 — Pixel client-side completo nos 4 produtos PT-BRswarm — spec técnica (OpenClaw)Tracking Swarm — visitas/ações de landing pages em tempo real
Amazon Arb (atacado→varejo BR)
Claude Code — Setup MCP VaultClaude Desktop — Setup MCP Vault (remote)VS Code + Copilot — Setup MCP Vault
Skill — Carousel Designer (Paper Style)carousel-paperPlugin marketing-skills (coreyhaines31/marketingskills)
Standup 2026-05-14Standup 2026-05-15Standup 2026-05-16Standup 2026-05-17Standup 2026-05-18Standup 2026-05-19Standup 2026-05-20Standup 2026-05-21Standup 2026-05-22Standup 2026-05-25Standup 2026-05-26Standup 2026-05-27Standup 2026-05-28Standup 2026-05-29Standup 2026-06-01Standup 2026-06-02Standup 2026-06-03Standup 2026-06-05Standup 2026-06-11Standup 2026-06-15Standup 2026-06-16Standup 2026-06-17Standup 2026-06-18Standup 2026-06-22Standup 2026-06-23Standup 2026-06-29Standup 2026-06-30Standup 2026-07-01Standup 2026-07-02Standup 2026-07-03Standup 2026-07-06Standup 2026-07-07Standup 2026-07-08Standup 2026-07-09Standup 2026-07-10Standup 2026-07-13Standup 2026-07-14Standup 2026-07-15Standup 2026-07-16Standup 2026-07-17Standup 2026-07-21Standup 2026-07-22Standup 2026-07-23Standup 2026-07-28Standup 2026-07-29Standup 2026-07-30Standup 2026-07-31Standup 2026-08-03Standup 2026-08-06Standup 2026-08-07Standup 2026-08-10Standup 2026-08-11Standup 2026-08-12Standups
MOCStandup 2026 07 23Welcome
v0.3
K
Kodama Vault
brain / projects / swarm

Tracking Swarm — visitas/ações de landing pages em tempo real

Tracking Swarm

Sistema de rastreamento em tempo real das landing pages da Kodama. Snippet JS injetado na página abre WebSocket pro swarm; toda visita e ação aparece ao vivo em https://swarm.kodama.solutions/sites. Página com o snippet se auto-registra no primeiro evento — zero cadastro manual.

Implementado e deployado em prod: 2026-07-10 (commit 8bc204b no repo kodama1/swarm).

Como usar (qualquer LP)

<script src="https://swarm.kodama.solutions/t.js" data-site="minha-landing" defer></script>
  • data-site opcional (default: hostname da página). Convenção: um data-site único por LP (ex: vek1-lp-pet-shop) pra cada uma virar linha própria no dashboard, em vez de agrupar tudo no hostname.
  • Em Next.js: next/script com strategy="afterInteractive".
  • Evento manual: swarmTrack('nome_do_evento', { qualquer: 'meta' }).

O que o snippet captura

Evento Quando Meta
pageview load + navegação SPA (pushState/popstate) title, referrer
click clicks em a, button, [data-track] tag, texto, href, data-track
submit submit de form id/name/action do form
scroll milestones 25/50/75/100% (1x por pageview) depth
leave pagehide / aba escondida duração ms, scroll máximo
custom swarmTrack(...) livre

Transporte: WebSocket wss://swarm.kodama.solutions/ws; fallback sendBeacon POST /collect (unload ou WS bloqueado). IDs: visitor persiste em localStorage, session em sessionStorage. Não coleta PII além de user-agent.

Visitantes únicos + geolocalização (2026-07-17)

  • Fingerprint server-side estilo Plausible: hash(dia|site|ip|ua). Quando o browser bloqueia localStorage (vid ausente/anon), o fingerprint vira o visitor_id — antes cada pageview desses virava um "único" novo, inflando a contagem. IP cru nunca é gravado, só o hash. Salt configurável via FP_SALT.
  • Bots dropados no ingest (UA regex: bot/crawl/spider/headless/curl/python-requests/...): WS recusado com code 1008, beacon aceito e descartado. Bot não vira visitante nem presença.
  • Geo por IP via geoip-lite (base MaxMind embutida, lookup local offline, cache por IP): colunas country/region/city em cada evento. nginx passa X-Forwarded-For pro /ws e /collect. Container tracker subiu pra 384M (base fica ~120M em RAM).
  • Migration: db/migrations/0004_tracking_geo.sql. Dashboard: seção "Localização" no detalhe do site (países+cidades com bandeira, cobertura de geo) e cidade/bandeira no feed ao vivo. Eventos pré-2026-07-17 não têm geo (a página mostra a cobertura).
  • Gotcha: base do geoip-lite é snapshot da versão do pacote — atualizar o pacote de tempos em tempos se precisão geográfica importar.

Arquitetura

LP (t.js) ──WS──▶ tracker (Node+ws, :4322, container infra-tracker-1)
                     │ insert
                     ▼
             Postgres swarm (tracked_sites, track_events)
                     │ trigger NOTIFY 'swarm_events'
                     ▼
             dashboard Astro ──SSE──▶ página /sites (feed ao vivo)
  • tracker/ no repo swarm: serve /t.js, ingere /ws + /collect, expõe /live (presença = conexões WS abertas = visitantes online agora) e /healthz. Sem auth (snippet público) — allowlist de event types, rate limit por conexão (40 eventos/10s), caps de tamanho.
  • Retenção: NENHUMA (2026-07-14) — eventos crus ficam pra sempre; são a base das análises temporais por site. O purge de 90 dias que existia foi removido de propósito. Se o volume um dia apertar o Postgres, a saída é rollup agregado + purge do cru, nunca purge silencioso.
  • DB: migration db/migrations/0003_tracking.sql — tracked_sites (auto-registro por upsert com cache de 60s) + track_events. Triggers reusam notify_swarm_event().
  • Dashboard: página /sites (visitantes online, views/visitantes hoje, feed de ações ao vivo) → clique num site abre /sites/<key> com detalhe completo: série diária de views/visitantes/ações (7d/30d/90d/tudo), views por hora do dia (fuso SP), top páginas/referrers/clicks, submits+customs, tempo médio na página, scroll médio, feed ao vivo do site. APIs /api/track-events e /api/track-live (proxy autenticado pro tracker interno), canais SSE tracking/sites.
  • nginx (VPS Hermes, swarm.kodama.solutions): location = /t.js, = /ws (upgrade headers), = /collect → 127.0.0.1:4322. Backup da conf pré-mudança em /root/swarm-nginx.bak.

Onde já é obrigatório

  • vek1: issues #94–103 do kodama1/vek1 (LPs de nicho + use-case) têm seção "Tracking swarm (obrigatório)" no checklist, com data-site padrão vek1-lp-<slug>. Comparison pages (#104–108) ficaram de fora por decisão de escopo — adicionar se fizer sentido.
  • LPs futuras publicadas pelo swarm (deploy_landing_page) devem incluir o snippet.

Gotchas

  • O ingest é público de propósito (auto-registro). Se aparecer site lixo/spam em tracked_sites, é só delete from tracked_sites where site_key = '...' — o cascade limpa os eventos.
  • Presença ("N online") vem das conexões WS vivas no tracker, não do banco — reinício do container zera a presença momentaneamente, sem perder eventos.
  • heartbeat/ping-pong a cada 30s derruba conexão morta; proxies não inflam a contagem.

Relacionado: projects/swarm/architecture, projects/swarm/dashboard, projects/vek1/seo-market-strategy

notas relacionadas
carregando…