Sete ferramentas, uma só técnica.
Cada golpe é uma camada do pipeline. Juntos formam o Sétimo Estilo do código — um sistema que se monitora, se corrige e se explica sozinho.
- 01
Diffador Semântico
7_diff.pyCompara dois snapshots datados e mostra o que melhorou, piorou ou apareceu de novo. Cada correção feita no site vira um delta visível.
- Evolução numérica — "212 sem meta" → "180 sem meta" ↘ −32
- URLs específicas que ganharam ou perderam meta description, H1, alt-text
- Mudanças no catálogo do fabricante (preço, ano, motor, modelo novo)
- Sumário executivo com melhorias, regressões e estáveis
python 6_relatorio.py --tag baseline # ponto inicial # ... mexe no site, corrige problemas ... python 6_relatorio.py # snapshot do dia python 7_diff.py # diff automático - 02
Modo Estrategista
app.py · 4º modoUm quarto modo que dispensa chat livre. Você escolhe uma análise executiva, o app cruza site.db + catálogo oficial + chunks RAG e manda tudo num único prompt para o Sonnet.
- Seis perguntas executivas pré-prontas (plano de 30 dias, SWOT, ROI, …)
- Briefing automático com inventário, achados, catálogo e gaps
- Resposta no formato de consultoria sênior — direta e quantificada
- Tudo gravado no histórico (data/chat.db) pra revisitar depois
- 03
Sentinela One-shot
update.shUm comando que toca todo o pipeline em ordem: raspagem, reindex Chroma, crawl de sitemaps, extração estruturada, catálogo do fabricante, auditoria de telefones, snapshot e diff vs anterior.
- Nove etapas em sequência, com log silencioso em /tmp/sentinela_*.log
- Diff automático contra o snapshot anterior se houver
- Modo --skip-rag pra rodar só auditoria (~1 min)
- Pronto pra agendar via cron ou launchd
./update.sh # versão completa (~5 min) ./update.sh --skip-rag # só auditoria (~1 min) - 04
Castelo do Infinito (mu-plugins)
mu-plugins/castelo-infinito*.phpO ataque deixou de ser análise — virou correção. Seis mu-plugins WordPress que arrumam o site na mesma marretada: meta description, alt-text, H1 fallback, contatos canônicos, dados estruturados e bloco dinâmico de unidade em página de item.
- Parte 1 — meta description + alt-text via output buffer (page builders não usam wp_get_attachment_image)
- Parte 2 — tabela de substituição segura normaliza contatos canônicos por unidade
- Parte 3 — H1 fallback + JSON-LD schema.org por unidade
- Parte 4 — bloco "endereço · telefone · horário" injetado nas páginas de item
- Parte 5 — patch_img_alt_in_html() varre HTML e injeta alt derivado de title/figcaption/filename
- Parte 6 — admin dashboard em Tools → Castelo do Infinito (por site + visão agregada)
wp rede audit-summary --network wp rede contacts diff # Tools → Castelo do Infinito (visão agregada) - 05
Inspetor de Conformidade
app.py · modo InspetorQuando a política editorial de um catálogo muda, alguém precisa verificar se as páginas acompanharam. O Inspetor compara o catálogo publicado com o catálogo de referência e aponta onde os dois divergem — campo a campo, página a página.
- Divergência de política — lista cada URL cujo conteúdo contraria a regra vigente
- Cobertura de itens por unidade — o que falta, o que sobrou de versões antigas
- Valores publicados vs oficiais — flagra grafias e variações divergentes
- Consistência de especificação — os mesmos atributos batem entre as unidades?
- A tabela extraída espelha a de referência: mesmas colunas, comparável direto
python extract_models.py # extrai catálogo publicado # app.py → Inspetor → divergências contra a política vigente - 06
Visual UX (Playwright)
app.py · modo Visual UX · 9_playwright_audit.pyO olho do espadachim ganhou três viewports. Playwright headless atravessa Atendente, Inspetor e Estrategista, tira screenshot em 375 / 1024 / 1920 e grava em playwright_audits — sobrepor regressões fica trivial.
- Três viewports simultâneos: 375 (mobile), 1024 (HD), 1920 (Full HD)
- Subprocess streaming pro Streamlit — vê cada passo do crawler ao vivo
- Detecta LCP > 4s e cumulative layout shift por viewport
- Snapshots datados em data/playwright_audits/ — pronto pra diff visual
- 07
Trovão ao Vivo
app.py · sidebar · app_log.pyO sétimo golpe: observabilidade total. Ring buffer compartilhado entre stdout e UI — cada busca RAG, cada chamada do Sonnet, cada linha do pipeline aparece colorida no painel da sidebar. E um botão único toca o pipeline inteiro.
- Logs ao vivo na sidebar com slider 10–200 eventos · DEBUG / INFO / WARNING / ERROR coloridos
- Botão "Rodar pipeline completo" — subprocess.Popen com streaming linha-a-linha
- Checkboxes "pular RAG" / "pular concorrente" pra escolher peso do golpe
- Mesmos eventos vão pro terminal — auditoria zero-touch via tail no journalctl
- Status final: tempo total · código de saída + última linha
streamlit run app.py # sidebar → Pipeline → Rodar pipeline completo # (cada linha do update.sh vira evento INFO no painel)
Sete perguntas executivas.
O Atendente conversa. O Inspetor audita. O Estrategista responde — sempre com dados cruzados de site.db, catálogo oficial e RAG num único prompt.
- 01
Plano de ação 30 dias
Quatro sprints × entregas × responsável × KPI.
- 02
Análise SWOT
Forças, fraquezas, oportunidades e ameaças com dados do site real.
- 03
ROI das correções
Cinco correções com horas-homem, ganho esperado e payback.
- 04
Posicionamento competitivo
Rede A vs Fabricante vs concorrência, com três movimentos.
- 05
Pauta para a direção
Reunião de 30min — três dados + duas perguntas + uma recomendação.
- 06
Riscos e bombas-relógio
Severidade, mitigação imediata e mitigação definitiva.
- 07
Catálogo publicado vs referência
Cobertura, divergência de política, valores e specs inconsistentes.
Mapa do tesouro.
A árvore inteira do projeto, com cada arquivo e seu papel. A complexidade é só aparente — cada script faz uma coisa.
rag-rede/
├── 1c_wp_loader.py ─ raspa WP (texto pro RAG)
├── 2_index.py ─ Chroma (vetores)
├── 2b_sitemap_crawler.py ─ descobre URLs
├── 2c_concorrente_crawler.py ─ concorrência (Rede B)
├── 2d_rede_a_eco_crawler.py ─ ecossistema Rede A (3 domínios)
├── 3_site_extract.py ─ links / imgs / forms / contatos / meta
├── 3b_concorrente_extract.py ─ extração concorrente
├── 4_compare_oficial.py ─ catálogo do fabricante
├── 4b_extract_rede_a_models.py ─ catálogo Rede A (versões / cores / preço)
├── 5_audit_telefones.py ─ relatório de telefones
├── 6_relatorio.py ─ snapshot datado
├── 7_diff.py ─ comparador entre snapshots
├── 8_compare_concorrente.py ─ matriz Rede A × Rede B × Fabricante
├── 9_playwright_audit.py ─ Playwright multi-viewport
├── update.sh ─ sentinela one-shot
├── app.py ─ 5 modos: Atendente · Auditor · Inspetor · Estrategista · Visual UX
├── app_log.py ─ ring buffer logs (stdout + sidebar)
├── db.py ─ chat history SQLite
├── db_site.py ─ banco estruturado SQLite
├── network.json ─ config dos 5 sites
└── data/
├── chroma/ ─ vetores
├── site.db ─ pages + modelos_rede_a + modelos_fabricante
├── chat.db ─ histórico conversas
└── COMPETITIVO.md ─ matriz Rede A × Rede B × FabricanteOrdem de demonstração.
Os sete passos pra mostrar o sistema inteiro a quem nunca viu — em menos de quinze minutos.
- 01
Sidebar · Logs do app
Abre o painel. Cada movimento dali pra frente aparece colorido em tempo real — INFO azul, ERROR vermelho intenso.
- 02
Modo Inspetor — divergência de política
Flagra as URLs cujo conteúdo contraria a regra editorial vigente.
- 03
Modo Inspetor — cobertura
Confirma que Modelo X falta na matriz e Modelo Y é legado em 3 lojas.
- 04
Modo Estrategista — catálogo
Sonnet cruza modelos_rede_a × modelos_fabricante e devolve plano executivo.
- 05
Modo Visual UX
Roda Playwright em 375 / 1024 / 1920 — cada linha do crawler aparece no painel de logs ao vivo.
- 06
WP Admin · Castelo do Infinito
Abre /wp-admin/tools.php?page=castelo — visão rede agregada com tudo que o mu-plugin já corrigiu hoje.
- 07
Sidebar · Pipeline completo
Toca update.sh inteiro, cada linha vira evento de log. Ao final: tempo total e código de saída.
Rede A × Rede B × Referência.
Cruzamento direto entre Rede A, Rede B (concorrente multisite) e Referência (catálogo oficial), gerado pelo 8_compare_concorrente.py. Os números abaixo são ilustrativos: demonstram o formato da análise e não descrevem nenhuma operação real.
- 320Rede A (ecossistema)páginas indexadas
- catálogo principal210
- unidades40
- catálogo secundário70
- 355Rede Bpáginas indexadas
- 6Referênciapáginas indexadas
| Feature | Rede A | Rede B | Fabricante |
|---|---|---|---|
| Configurador | — | — | — |
| Simulador Financiamento | — | — | — |
| Simulador Consorcio | — | ✓ 17 | — |
| Estoque Online | ✓ 72 +61 eco | ✓ 24 | — |
| Estoque Seminovos | ✓ 67 +69 eco | ✓ 377 | — |
| Avaliacao Usado | — | — | — |
| Blog | ✓ 56 +32 eco | — | — |
| Agendamento Online | ✓ 5 +2 eco | — | — |
| Test Drive | — | — | ✓ 1 |
| Pcd | ✓ 5 +1 eco | — | — |
| Ofertas | ✓ 21 +2 eco | — | — |
| Pecas | ✓ 5 +1 eco | ✓ 37 | — |
- 01
Vantagens da Rede A
- blog
- agendamento_online
- pcd
- ofertas
- 02
Gaps a fechar (Rede B tem)
- simulador_consorcio
- 03
Paridade
- estoque_online
- estoque_seminovos
- pecas
Por que esse projeto cabe num servidor pequeno.
Cada peça da pilha foi escolhida pela Primeira Presa do Inosuke: a estocada bruta que resolve o problema sem inventar mais cinco.
- 01
WordPress multisite com mu-plugins diretos
Em vez de tema headless + Next.js SSR + plugin marketplace pago. Seis arquivos PHP no mu-plugins/ consertam o que precisava ser consertado, sem deploy ritual.
- 02
update.sh — 9 etapas em sequência num único shell
Em vez de Airflow + DAG distribuído + Celery + Redis broker + Flower dashboard. Um ./update.sh e o pipeline inteiro roda do scraping ao snapshot.
- 03
Lando local em domínio de staging
Em vez de ambiente staging full stack + CI/CD multi-stage + Vault + feature flags. O /etc/hosts e o Docker do Lando dão conta do que um time inteiro de DevOps faria.
- 04
Snapshot file-based + diff semântico
Em vez de Snowflake + dbt + Looker + DataDog + alerting cluster. Um arquivo JSON datado no disco, um script Python que compara dois — a regressão fica visível sem precisar de dashboard.
- 05
JSON estático em /public + fetch direto
Em vez de API REST + GraphQL + Apollo + Redis cache + CDN edge functions. O dado é estático, o caminho é uma URL, o navegador resolve. A "API" é o sistema de arquivos.
Sete momentos da técnica.
Sete momentos da técnica, em vinhetas originais. Os kanjis carregam a ação que a imagem mostraria.
Concentração
Antes do golpe, a quietude. Ouvidos atentos, olhos fechados.
A escuta
Quando os olhos não veem, o som guia a lâmina.
Primeiro Movimento
O passo único — rápido demais para ser visto.
Postura de ataque
Joelhos dobrados, lâmina pronta, raios convergindo.
Sob a tempestade
A respiração entra em ressonância com o trovão.
Sétimo Estilo
A técnica original — só executada uma vez.
A carta de Jigoro
Antes do raio, a memória do mestre.
Direitos & Inspiração.
- 01
Arte da página
Tipografia, hairlines, raios, animações e o scar dourado são originais do projeto, gerados em SVG e CSS. Reaproveite livremente.
- 02
Referência cultural
Honoikazuchi no Kami (火雷神) e o conceito da Sétima Forma do Trovão são referências narrativas à obra Kimetsu no Yaiba (Demon Slayer) de Koyoharu Gotouge — publicada pela Shueisha, animada pela Ufotable, licenciada pela Aniplex. Esta página é homenagem cultural / educacional, não reproduz arte oficial, não comercializa o IP citado.
- 03
Dados do visitante
Audiência agregada via Google Analytics 4 — quantas pessoas chegam, por quais formas passam, de onde vieram. Usa os cookies
_ga. Não há formulário, login nem identificação pessoal, e nada do que você lê aqui é associado a você. O contador de marteladas da Primeira Forma continua só nolocalStoragedo seu browser — fica com você, ninguém mais vê. Um bloqueador como uBlock Origin derruba o analytics inteiro, e a página funciona igual. - 04
Código do projeto
rag-redeé projeto pessoal de demonstração de RAG aplicado a uma rede multisite WordPress. Os números exibidos aqui são ilustrativos, gerados para demonstrar o formato da análise — não descrevem nenhuma operação real nem identificam qualquer organização.
A maestria de uma forma única abre o caminho pra criar a sua própria.