Rota Reforma Tributária: Prepare sua empresa para as mudanças do IVA brasileiro. Saiba mais →
WhatsApp: (92) 3199-5696 Agendar Consulta
Falar no WhatsApp

Stack Técnico — Base de Conhecimento Bono Conta

BONO CONTA — BASE DE CONHECIMENTO TÉCNICA
Última atualização: 14/06/2026 · Esta página é a fonte primária de contexto para o Claude Code.
Para briefar uma nova sessão: leia esta página e diga “leia a página stack-tecnico e retome o contexto do projeto Bono Conta”.

MONITOR DE HARDWARE — TEMPO REAL

Monitor disponível apenas para administradores.

1. INFRAESTRUTURA

ItemValor
PlataformaWordPress 7.0 + PHP 8.3-FPM + Nginx
Domíniobonoconta.com.br
IPs do servidor45.236.222.166 / 45.236.223.245
Webroot/var/www/bonoconta/
Tema ativo/wp-content/themes/bonoconta/
SMTP hostmail.ita.locaweb.com.br:587 (STARTTLS)
SMTP user / FromSite@bonoconta.com.br
Email admincontato@bonoconta.com.br
BCC globalbrunojcruz@gmail.com — cópia de todos os emails (exceto quando TO já é este endereço)
Logs Nginx/var/log/nginx/bonoconta_access.log · /var/log/nginx/bonoconta_error.log
Log PHP-FPM/var/log/php8.3-fpm.log

2. ARQUIVOS PRINCIPAIS

ArquivoConteúdo (~linhas)
functions.phpToda a lógica de enriquecimento, monitoramento, APIs, cron, CF7, emails (~3300 linhas)
inc/lead-documents.phpGeradores de HTML por seção (receita, cgu, cnj, etc.) + bc_gerar_todos_documentos()
inc/lead-reports.phpTemplates de relatório e painel de leads
inc/email-marketing.phpIntegração com plataforma de email marketing
inc/admin-email-panel.phpPainel admin para disparo manual de emails
inc/email-template.phpTemplate base de emails HTML
uploads/cse-config.xmlXML dos 50 domínios do Google CSE (para importação)
uploads/bc-leads/{cnpj}/{YYYY-MM-DD_HH-MM-SS}/Relatórios HTML gerados por lead

3. WP OPTIONS — CONFIGURAÇÃO

OpçãoValor atualDescrição
bc_api_google_searchAIzaSyBF4F5gVto3nNjh81kx…Google Custom Search API Key
bc_api_google_cse4510783fb4784406bID do mecanismo de pesquisa personalizado
bc_datajud_api_keyauto-gerenciado (default hardcoded em bc_consultar_cnj())Chave da API pública DataJud/CNJ — atualizada automaticamente pelo monitor
bc_datajud_base_urlauto-gerenciado (default: https://api-publica.datajud.cnj.jus.br/)URL base da API DataJud — atualizada automaticamente pelo monitor
bc_datajud_statusok / erro / recuperadoStatus da última verificação do DataJud
bc_datajud_ultimo_checkdatetimeTimestamp da última verificação
Para alterar chave/URL do DataJud manualmente: wp option update bc_datajud_api_key “NOVA_CHAVE” e bc_datajud_base_url “NOVA_URL”

4. BANCO DE DADOS

wp_bc_lead_monitor

ColunaTipoDescrição
idINT PKAuto-incremento
cnpjVARCHAR(14)CNPJ sem máscara
razao_socialVARCHARNome da empresa
email_contatoVARCHAREmail do lead para alertas
hash_dadosVARCHAR(32)MD5 dos 11 campos monitorados
resumo_jsonTEXTSnapshot dos campos + lista de sócios + timestamp
ultima_checkDATETIMEÚltimo enriquecimento realizado
proxima_checkDATETIMEPróximo enriquecimento agendado (diário)
total_alertasINTContador de alertas enviados
criado_emDATETIMEData de cadastro no monitor
atualizado_emDATETIMEÚltima atualização do registro

5. PIPELINE DE ENRIQUECIMENTO — 13 FONTES

#Função (functions.php)LinhaAPI / FonteDado obtido
1bc_consultar_cnpj()L808cnpj.ws / Receita FederalRazão social, situação cadastral, endereço, sócios, Simples Nacional, capital social
2bc_consultar_cgu_ceis()L1148apidados.cgu.gov.br — CEISSanções — empresas impedidas de contratar com governo
3bc_consultar_cgu_cnep()L1195apidados.cgu.gov.br — CNEPPenalidades administrativas severas
4bc_consultar_acordos_leniencia()L1495apidados.cgu.gov.br — AcordosAcordos de leniência (Lei Anticorrupção 12.846/2013)
5bc_consultar_contratos_publicos()L1229api.portaldatransparencia.gov.brContratos firmados com o governo federal
6bc_consultar_convenios()L1652api.portaldatransparencia.gov.brConvênios — recursos recebidos da União
7bc_consultar_emendas()L1732api.portaldatransparencia.gov.brEmendas parlamentares recebidas
8bc_consultar_beneficios_federais()L1592api.portaldatransparencia.gov.brRenúncias fiscais (Simples, MEI, RECOPA, ZFM etc.)
9bc_consultar_cvm()L1303dados.cvm.gov.brRegistro em bolsa — S.A. de capital aberto
10bc_consultar_cnj()L1389api-publica.datajud.cnj.jus.br (Elasticsearch)Processos judiciais — via Google Search + DataJud
11bc_consultar_registro_br()L1536rdap.registro.brDomínios .br, ASNs, blocos IP registrados
12bc_consultar_anatel()L1575sistemas.anatel.gov.brOutorgas de telecomunicações
13bc_consultar_google_search()L2312customsearch.googleapis.com (CSE)Reputação, menções, reclamações na web

6. CNJ DATAJUD — ESTRATÉGIA E IMPLEMENTAÇÃO

Limitação crítica: O campo partes NÃO está disponível na API pública do DataJud. Queries por CNPJ/CPF direto retornam 0 documentos.

Estratégia implementada (pipeline de 2 etapas)

  1. Google Search busca páginas com o nome da empresa no Jusbrasil → extrai números CNJ do texto dos snippets com regex /d{7}-d{2}.d{4}.d.d{2}.d{4}/
  2. DataJud valida cada número extraído via POST api_publica_{index}/_search com match: numeroProcesso

bc_datajud_index_from_numero() — mapeamento J/TT → índice

Número CNJ (20 dígitos sem máscara): NNNNNNN DD AAAA J TT OOOO
                                     0-6    7-8 9-12 13 14-15 16-19

J (posição 13) = ramo da Justiça:
1 → stf          3 → stj          7 → stm
4 → trf{TT}      (TT: 1=trf1, 2=trf2, 3=trf3, 4=trf4, 5=trf5, 6=trf6)
5 → tst(TT=0) ou trt{TT} (TT: 1-24)
6 → tre-{uf}     (TT: 1=ac, 2=al, 3=ap, 4=am, 5=ba ... 27=to)
8 → tj{uf}       (TT: 1=ac, 2=al, 3=ap, 4=am, 5=ba ... 27=to)
9 → tjmmg(13) / tjmrs(23) / tjmsp(26)

Configuração da API (WP options)

bc_datajud_api_key  → padrão: cDZHYzlZa0JadVREZDJCendQbXY6SkJlTzNjLV9TRENyQk1RdnFKZGRQdw==
bc_datajud_base_url → padrão: https://api-publica.datajud.cnj.jus.br/
Endpoint de teste:  POST {base_url}api_publica_tjam/_count  (retorna count > 0 se API up)
Wiki oficial:       https://datajud-wiki.cnj.jus.br/

7. GOOGLE CUSTOM SEARCH — 50 DOMÍNIOS

Limite: 50 domínios no CSE. Plano gratuito: 100 queries/dia. API Key: bc_api_google_search. CSE ID: bc_api_google_cse. O arquivo /uploads/cse-config.xml pode ser reimportado em programmablesearchengine.google.com se necessário.

Governamentais e Judiciário

DomínioTipo
comprasnet.gov.brCompras governamentais
portaldatransparencia.gov.brTransparência federal
mj.gov.brMinistério da Justiça
cvm.gov.brComissão de Valores Mobiliários
bacen.gov.brBanco Central
anvisa.gov.brAgência de Vigilância Sanitária
ans.gov.brAgência Nacional de Saúde
anatel.gov.brAgência de Telecomunicações
cade.gov.brConselho Admin. de Defesa Econômica
carf.fazenda.gov.brConselho Admin. de Recursos Fiscais
consumidor.gov.brPlataforma de reclamações gov.
tcu.gov.brTribunal de Contas da União
mpf.mp.brMinistério Público Federal
mp.am.gov.brMP do Amazonas
tce.am.gov.brTribunal de Contas do AM
suframa.gov.brZona Franca de Manaus
procon.am.gov.brProcon Amazonas
procon.sp.gov.brProcon São Paulo

Tribunais

DomínioTribunal
stf.jus.brSupremo Tribunal Federal
stj.jus.brSuperior Tribunal de Justiça
tst.jus.brTribunal Superior do Trabalho
trf1.jus.brTRF 1ª Região
trf2.jus.brTRF 2ª Região
trf3.jus.brTRF 3ª Região
trf4.jus.brTRF 4ª Região
trf5.jus.brTRF 5ª Região
trf6.jus.brTRF 6ª Região
trt11.jus.brTRT 11ª Região (AM/RR)
tjam.jus.brTJ Amazonas
tjsp.jus.brTJ São Paulo

Jurídico / Imprensa Jurídica

DomínioTipo
jusbrasil.com.brPortal jurídico — fonte primária de números CNJ
conjur.com.brConsultor Jurídico
jota.infoJota — jornalismo jurídico
migalhas.com.brMigalhas — notícias jurídicas

Imprensa / Negócios

DomínioTipo
g1.globo.comG1 Globo
valor.globo.comValor Econômico
estadao.com.brO Estado de São Paulo
uol.com.brUOL (cobre Folha, Band etc.)
reuters.comReuters
bloomberg.com.brBloomberg Brasil
cnnbrasil.com.brCNN Brasil
exame.com.brExame
infomoney.com.brInfoMoney
cartacapital.com.brCarta Capital
istoe.com.brIstoÉ
veja.abril.com.brVeja
metropoles.comMetrópoles
gazetadopovo.com.brGazeta do Povo
correiobraziliense.com.brCorreio Braziliense

Consumidor

DomínioTipo
reclameaqui.com.brReclamações de consumidores

8. FUNÇÕES PRINCIPAIS (functions.php)

FunçãoLinhaDescrição
bc_enriquecer_lead(string $cnpj)L2473Orquestrador completo: chama as 13 APIs, 3 queries Google. Usar para novos leads.
bc_enriquecer_lead_monitor(string $cnpj)L2393Versão leve: 1 query Google (Jusbrasil). Usar no monitoramento diário para preservar quota.
bc_consultar_google_search(string $razao)L23123 queries: geral + reputação + Jusbrasil focado. Retorna até 8 resultados deduplicados.
bc_consultar_google_search_monitor(string $razao)L24211 query Jusbrasil. Retorna até 5 resultados. Preserva quota diária de 100.
bc_consultar_cnj(string $cnpj, $razao, $fantasia, array $google_resultados)L1389Extrai números CNJ dos snippets → valida no DataJud. Retorna status: ok|links_externos.
bc_datajud_index_from_numero(string $numero)L1355Mapeia número CNJ (20 dígitos) ao índice Elasticsearch (tjam, trt11, trf1 etc.).
bc_hash_enriquecimento(array $dados)L1764MD5 dos 11 campos de detecção de mudança.
bc_resumo_compacto(array $dados)L1782Snapshot compacto para armazenar no banco e comparar no diff.
bc_monitor_registrar(string $cnpj, string $email, array $dados)L1807INSERT ou UPDATE no wp_bc_lead_monitor.
bc_enviar_alerta_mudanca(object $reg, array $dados_novo, array $resumo_ant, string $dest, string $url)L1842Email HTML com tabela de diff antes/depois.
bc_executar_monitoramento()L2244Cron hook bc_monitorar_leads. Processa até 100 leads/dia, diff + alerta.
bc_datajud_health_check()L2043Testa API DataJud via _count no índice TJAM.
bc_datajud_scrape_wiki()L2080Raspa datajud-wiki.cnj.jus.br em busca de nova chave/URL.
bc_datajud_tentar_recuperar()L2131Scrape → valida nova config → salva em WP options se válida.
bc_executar_monitoramento_datajud()L2177Cron hook bc_verificar_datajud. Orquestra health check + auto-recuperação + alerta.
bc_gerar_todos_documentos(string $cnpj, string $razao, array $dados, string $tipo, string $origem, array $mudancas)lead-documents.php L704Gera pasta com HTMLs em uploads/bc-leads/{cnpj}/{timestamp}/

9. CRON JOBS

HorárioHookFunçãoDescrição
05:30 diáriobc_verificar_datajudbc_executar_monitoramento_datajud()Health check DataJud → auto-recuperação se falhar → email alerta
06:00 diáriobc_monitorar_leadsbc_executar_monitoramento()Re-enriquece leads com proxima_check vencida (LIMIT 100), detecta mudanças
Única vezbc_lead_processarclosure em functions.php L3094Pipeline completo: enriquecimento + monitor + docs + emails + CRM + marketing

10. FLUXO DE DADOS — FORMULÁRIO → ENRIQUECIMENTO

1. Lead preenche CF7 (form IDs: 15, 16, 17, 18, 92)
   Campos: bc_name, bc_email, bc_phone, bc_company, bc_cnpj, bc_service, bc_message

2. wpcf7_skip_mail → TRUE (email padrão CF7 suprimido)
   wpcf7_mail_sent → agenda bc_lead_processar + dispara loopback /?doing_wp_cron=1

3. Job bc_lead_processar (assíncrono, ~30-120s):
   a. bc_enriquecer_lead($cnpj)  → 14 APIs + 3 Google queries
   b. bc_monitor_registrar()     → INSERT/UPDATE wp_bc_lead_monitor
   c. bc_gerar_todos_documentos()→ HTML em uploads/bc-leads/{cnpj}/{timestamp}/
   d. Email ADMIN: TO contato@bonoconta.com.br, BCC brunojcruz@gmail.com
      - Template CF7 + bloco enriquecimento + botão perfil + link relatório
   e. Email CONFIRMAÇÃO: TO {email_lead} — "Recebemos seu contato!"
   f. bc_crm_push_lead()         → CRM
   g. bc_em_subscribe()          → email marketing

11. MONITORAMENTO DIÁRIO — FLUXO

05:30 — bc_verificar_datajud:
  bc_datajud_health_check() → POST api_publica_tjam/_count
  ✓ OK: registra status, encerra
  ✗ ERRO:
    bc_datajud_tentar_recuperar():
      bc_datajud_scrape_wiki() → raspa 3 páginas da wiki
        extrai ApiKey via regex /ApiKeys+([A-Za-z0-9+/=_-]{20,})/
        extrai URL via regex /https://[a-z0-9-]+.datajud.cnj.jus.br//
      valida nova config com _count
      se válida → update_option('bc_datajud_api_key', ...) + update_option('bc_datajud_base_url', ...)
    email alerta: ✅ recuperado OU 🚨 falha manual necessária

06:00 — bc_monitorar_leads:
  SELECT * FROM wp_bc_lead_monitor WHERE proxima_check <= NOW() LIMIT 100
  para cada lead:
    bc_enriquecer_lead_monitor($cnpj)  → 1 query Google (Jusbrasil) + 12 outras APIs
    bc_hash_enriquecimento($dados)     → MD5 dos 11 campos
    se hash mudou:
      calcula diff campo a campo (situacao, simples, ceis, cnep, acordos, cnj,
                                   dominios, socios_n, convenios, emendas, contratos)
      bc_gerar_todos_documentos(..., $mudancas)
      bc_enviar_alerta_mudanca()       → email HTML com diff antes/depois
      incrementa total_alertas
    UPDATE proxima_check = NOW() + INTERVAL 1 DAY

12. DETECÇÃO DE MUDANÇAS — 11 CAMPOS

CampoFonteTipo
situacaoReceita Federalstring (ATIVA, SUSPENSA etc.)
simplesReceita Federalstring (Sim/Não)
ceisCGU CEISint (total sanções)
cnepCGU CNEPint (total penalidades)
acordosCGU Acordosint (total acordos)
cnjDataJud via Googleint (total processos) ou "n/a"
dominiosRegistro.brint (total domínios .br)
socios_nReceita Federalint (contagem de sócios)
conveniosPortal Transparênciaint (total convênios)
emendasPortal Transparênciaint (total emendas)
contratosPortal Transparênciaint (total contratos)
Hash: md5(json_encode($resumo)). Se qualquer campo mudar, o hash difere e o alerta é disparado.

13. CF7 — FORMULÁRIOS

Form IDObservação
15, 16, 17, 18, 92Formulários de captura de leads. Email padrão CF7 suprimido via wpcf7_skip_mail. Processados em background via bc_lead_processar.

14. EMAIL — SISTEMA BCC

Filtro wp_mail (functions.php L3244):
  - Adiciona BCC: brunojcruz@gmail.com a TODOS os emails do site
  - EXCETO quando TO já é brunojcruz@gmail.com (evita conflito TO+BCC)

Email admin (step 4 do job):
  - TO: contato@bonoconta.com.br
  - BCC explícito: brunojcruz@gmail.com (+ filtro global, mas não duplica)
  - Reply-To: {email_lead}

Email confirmação (step 5 do job):
  - TO: {email_lead}
  - From: Bono Conta 
  - BCC: brunojcruz@gmail.com (via filtro global, se TO ≠ brunojcruz@gmail.com)

Alertas de monitoramento:
  - TO: contato@bonoconta.com.br
  - From: Bono Conta Monitor 

Alertas DataJud:
  - TO: contato@bonoconta.com.br
  - From: Bono Conta Monitor 

15. HISTÓRICO DE DESENVOLVIMENTO

CNJ DataJud — Descoberta e Implementação

Google CSE — 50 Domínios

Rotina de Monitoramento de Leads

Monitor de API DataJud

BCC Global — Correção

16. COMO BRIEFAR O CLAUDE CODE A PARTIR DESTA PÁGINA

Início de nova sessão:
1. Abra o terminal no diretório /home/upnetix
2. Inicie o Claude Code: claude
3. Digite: "Leia a página privada WordPress ID 111 (stack-tecnico) em bonoconta.com.br e retome o contexto completo do projeto Bono Conta"
4. Ou forneça o conteúdo desta página diretamente como contexto inicial

Comando WP-CLI para ler o conteúdo:
wp --allow-root --path=/var/www/bonoconta post get 111 --field=post_content
Para atualizar esta página após novos desenvolvimentos:
wp --allow-root --path=/var/www/bonoconta post update 111 --post_content="$(cat /tmp/novo-conteudo.html)"
Ou peça ao Claude Code: "Atualize a página stack-tecnico (ID 111) com as mudanças deste desenvolvimento"

22. EMAIL — ENVIO SMTP (Locaweb)

ItemValor
PluginWP Mail SMTP (mailer: smtp)
Hostmail.ita.locaweb.com.br · porta 587 · TLS
RemetenteSite@bonoconta.com.br
From confirmaçãoSite@bonoconta.com.br

Diagnóstico crítico (não esquecer): o host email.locaweb.com.br resolve para IPs internos (10.31.70.x) — inacessível de fora. As portas 25/465/587 desse host ficam bloqueadas. A solução é mail.ita.locaweb.com.br (IP público 191.252.112.194), que aceita conexão. Porta 25 de saída direta para MX também é bloqueada pela rede do VPS — por isso NÃO usar Postfix/MTA local. Gmail SMTP (587/465) está acessível como alternativa.

BCC seletivo: filtro wp_mail em functions.php adiciona Bcc brunojcruz@gmail.com APENAS em e-mails de notificação admin (assunto contém "Novo Lead"). Confirmação ao cliente vai SEM bcc.

23. FRONT-END DO BLOG

ComponenteImplementação
Hero carrosselbc_blog_hero_carousel() (functions.php) — 4 artigos mais recentes + 6 aleatórios; autoplay 6s; clicar no slide pausa para leitura; botão "Ler o Artigo"; setas/dots/swipe/teclado. CSS .bc-blog-hero, JS em main.js.
Cards com miniatura.bc-blog-card em index.php — featured image no topo (aspect 16:9, zoom no hover), categoria, título, excerpt (3 linhas), data, link.
Compartilhamentobc_share_buttons($pos) nas 3 posições (hero/meio/final). Botão "Compartilhar" (Web Share API: título+texto+link, miniatura via OG) + "WhatsApp" (wa.me direto, sem prompt de app). Instagram removido (Story não aceita pré-preenchimento via web).
Modal LGPDModal em header.php, aberto só por .bc-lgpd-trigger. Atributo HTML hidden + .bc-lgpd-overlay[hidden]{display:none!important} elimina o flash (FOUC) no carregamento.

24. RASTREAMENTO DE CONVERSÃO (Google Ads / GA4)

ItemValor
Arquivoassets/js/conversions.js
Eventogenerate_lead no wpcf7mailsent + micro-conversão form_start
Value-based biddingPJ+CNPJ+serviço=100 · PJ+CNPJ=70 · PF/sem CNPJ=30 (filtro PHP bc_conv_values)
Enhanced Conversionsgtag('set','user_data',{email,phone_number,address}) — Google hasheia SHA-256
IDsGA4 G-57VH37YNQ5 · GTM-MZ67ZJR7 · gtag GT-TXBS8H9 · Site Kit (módulos: analytics-4, tagmanager, ads, pagespeed)

Pendente no painel (manual): marcar generate_lead como key event no GA4, importar no Google Ads, ativar Enhanced Conversions for Leads, usar Smart Bidding por valor.

25. GERAÇÃO DE IMAGENS — FERRAMENTAS

FerramentaFunção
tools/bc-image.shImagem por IA (fotos/conceitos sem texto). --purpose draft|photo|text|hero|max escolhe modelo (gpt-image-1-mini/gpt-image-1/gpt-image-2) por economia×qualidade. Aplica identidade da marca, fallback automático p/ OpenAI, saída SEMPRE WebP.
tools/bc-html2img.shHTML→WebP via Chromium headless (snap). Para texto/dados/tabelas/pôsteres (texto PT-BR perfeito). Chromium só grava direto em /root, nomes sem ponto.
tools/gerar-imagens-internas.phpMotor de lote: 3-5 imagens internas WebP por artigo, contextualizadas por setor (pessoas em ambiente empresarial). Idempotente via meta _bc_imgs_internas. Quality high, WebP 92, distribuídas no corpo.

Backends: OpenAI (gpt-image-1/-mini/gpt-image-2) operacional. Google Imagen 4 / Gemini 3 Image suportados via --model mas exigem billing (fallback p/ OpenAI). Chaves em /home/upnetix/credenciais.txt. DALL-E 3 descontinuado — nunca usar.

Regras de imagem: todo artigo tem Hero (IA) + miniatura + 3-5 internas. WebP sempre. Texto na imagem só PT-BR sem erros (validar antes de publicar). Tabelas/dados → bc-html2img.sh (nunca IA). Sem viés/ambíguo/adulto/ofensivo. CSS .bc-article-figure img: aspect-ratio 3/2 + object-fit cover (anti-distorção) + width/height (anti-CLS). Quality UX Designer Pro Sênior.

26. IDENTIDADE VISUAL E PALETA

TokenValorUso
--primary#8b1a1aVinho (cor da marca — sóbria)
--primary-dark#6d1212Vinho escuro (hover)
--navy#00142dNavy (fundos, hero, títulos)
--lighter#F3F4F8Cinza claro
FontePoppins300–900

Logo adaptativa: header transparente (topo, fundo claro) → logo navy (bonoconta-logo-navy.png); header rolado (fundo navy) → logo branca (bonoconta-logo-branca.png). A logo original PNG é vermelha — não usar diretamente no header. Nunca usar azul como cor primária.

27. DIRETRIZES DE CONTEÚDO (fonte: CLAUDE.md)

O arquivo /home/upnetix/CLAUDE.md (15 seções de regras imutáveis) e a memória do Claude Code governam todo o conteúdo. Pontos-chave:

Artigos recentes: Edital PGFN 6/2026 (ID 170, transação tributária) e IFRS 18/CPC 51 (ID 177, nova DRE 2027, com comparativo HTML .bc-dre-compare).

17. SEO — CONFIGURAÇÃO COMPLETA

Plugin: Yoast SEO (wordpress-seo) v27.7

ConfiguraçãoValor
Title homepage%%sitename%% | Contabilidade Consultiva Estratégica em Manaus/AM
Meta description homepageBono Conta — Contabilidade consultiva estratégica para empresas que querem crescer com segurança fiscal, eficiência tributária e inteligência de negócios em Manaus e no Amazonas.
OG default imagehttps://bonoconta.com.br/wp-content/uploads/2026/06/og-default.jpg
Twitter/X account@bonocontaoficial
BreadcrumbsAtivado — separador: , home label: Início
Sitemap XMLAtivado via Yoast — /sitemap_index.xml
Author sitemapsDesativado
Canonical URLsAuto-geradas pelo Yoast

6 Schemas JSON-LD customizados (functions.php — add_action('wp_head', ...) L290)

SchemaLinhaCondiçãoDetalhes
Organization / AccountingServiceL294Todas as páginas@id: #organization · telefone · endereço · geo · knowsAbout (12 itens) · 7 serviços com Offer · sameAs (Instagram, Facebook, LinkedIn, YouTube)
WebSite + SearchActionL382Todas as páginas@id: #website · SearchAction com urlTemplate /?s={search_term_string}
FAQPageL400Somente homepage (is_front_page())6 perguntas e respostas sobre serviços, Reforma Tributária e atendimento
BreadcrumbListL441Páginas internas e posts (!is_front_page())Gerado dinamicamente com home + categoria (posts) ou página atual
WebPage + SpeakableL465Somente homepagecssSelector: .hero-exec-title, .hero-exec-lead, .section-title, .eyebrow
Article E-E-A-TL486Somente posts (is_single())wordCount, timeRequired, articleSection, author com sameAs, imagem OG, publisher #organization

Dados fixos do schema Organization

CampoValor
@typeAccountingService + LocalBusiness
name / legalNameBono Conta Contabilidade Consultiva
telephone+55-92-3199-5696
emailcontato@bonoconta.com.br
streetAddressAv. Marquês da Silveira - Cachoeirinha
addressLocalityManaus
postalCode69068-630
geo (lat/lon)-3.1019 / -60.0250
openingHoursSeg–Sex 08:00–17:00
priceRange$$
areaServedAmazonas, Manaus, Brasil

robots.txt (gerado dinamicamente — filter robots_txt L272)

# Crawlers de IA — acesso permitido
User-agent: GPTBot        Allow: /
User-agent: ChatGPT-User  Allow: /
User-agent: Google-Extended Allow: /
User-agent: PerplexityBot Allow: /
User-agent: ClaudeBot     Allow: /
User-agent: anthropic-ai  Allow: /
User-agent: Applebot-Extended Allow: /
User-agent: Bytespider    Disallow: /   ← BLOQUEADO
Sitemap: https://bonoconta.com.br/sitemap_index.xml
Sitemap: https://bonoconta.com.br/llms.txt
# START YOAST BLOCK
User-agent: *  Disallow:
Sitemap: https://bonoconta.com.br/sitemap_index.xml
# END YOAST BLOCK

llms.txt — arquivo físico para crawlers de IA

ItemValor
Caminho/var/www/bonoconta/llms.txt
URL públicahttps://bonoconta.com.br/llms.txt
Tamanho~14.8 KB
Link no <head><link rel="llms" href="https://bonoconta.com.br/llms.txt"> (L267 functions.php)
Referenciado em robots.txtSim — como segundo Sitemap
Nginx locationlocation = /llms.txt — Content-Type text/plain; expires 1d
ConteúdoIdentidade, serviços, perguntas frequentes, blog, contato, instruções para LLMs

Sitemap — prioridades customizadas (filter wpseo_sitemap_url L568)

URLPrioridade
/1.0
/servicos/0.95
/rota-reforma-tributaria/0.95
/sobre/0.85
/fale-conosco/0.85
/blog/0.80
demais páginas/posts0.6 (padrão Yoast)

18. CÓDIGO-FONTE — ESTRUTURA DO TEMA

Tema: bonoconta (filho de hello-elementor) — /var/www/bonoconta/wp-content/themes/bonoconta/

ArquivoFunção
style.cssCabeçalho do tema filho (apenas metadados, Template: hello-elementor). Sem CSS — todo CSS está em assets/css/main.css
functions.phpNúcleo completo (~3300 linhas): enqueue, schemas, CF7, enrichment pipeline, 13 APIs, cron jobs, DataJud monitor, BCC global, email templates, sitemap, robots, llms.txt link
header.phpHTML global: notice-banner, #site-header com nav, WhatsApp float, LGPD modal, mobile menu
footer.phpFooter com links, CTA, disclaimer legal, scripts finais
front-page.phpHomepage — constrói a partir de blocos do Elementor via bc_elementor_content()
page.phpTemplate padrão de páginas internas (blog posts, páginas sem template específico)
single.phpTemplate de posts individuais do blog
404.phpPágina de erro 404 customizada
sidebar.phpSidebar (não usada nas páginas principais)
index.phpFallback obrigatório WordPress (redireciona para front-page)
page-sobre.phpPágina /sobre/ com Elementor
page-servicos.phpPágina /servicos/ com Elementor
page-rota-reforma-tributaria.phpPágina /rota-reforma-tributaria/ com Elementor
page-fale-conosco.phpPágina /fale-conosco/ com CF7 forms 15/16/17/18/92
page-obrigado.phpPágina de confirmação pós-formulário /obrigado/
page-privacidade.phpPolítica de privacidade /politica-de-privacidade/
page-painel-leads.phpPainel admin de leads /painel-leads/ — requer autenticação
page-stack-tecnico.phpEsta página /stack-tecnico/ — injeção de CSS no <head> via wp_head

Diretório inc/ — módulos incluídos via functions.php

ArquivoResponsabilidade
inc/lead-documents.phpGeradores de HTML dos relatórios de lead: bc_gerar_todos_documentos(), templates de cards por seção (receita, CEIS, CNJ, sócios, etc.)
inc/lead-reports.phpGeração e salvamento de relatórios físicos em uploads/bc-leads/{cnpj}/{timestamp}/
inc/email-template.phpTemplate HTML de e-mail para o time Bono Conta — renderiza o enrichment completo com tabelas e seções de risco
inc/email-marketing.phpTemplate HTML de e-mail de confirmação para o lead — apresentação institucional com próximos passos
inc/admin-email-panel.phpPainel HTML no e-mail admin com links diretos ao CRM, relatórios e dados do lead
inc/suitecrm-api.phpClient GraphQL para Twenty CRM — 5 funções (ver seção 19)
inc/icons.phpSVG icons usados nos templates de e-mail e na UI

Assets

CaminhoDescrição
assets/css/main.cssCSS principal do site (~1700 linhas): variáveis CSS, reset, tipografia, layout, header, footer, seções, forms, blog, responsivo
assets/js/main.jsJS principal: scroll handler do header, menu mobile, animações on-scroll, comportamento dos forms
assets/images/Imagens do tema (logo, ícones, OG defaults)

Plugins ativos (5 relevantes)

PluginVersãoUso no projeto
Contact Form 76.1.65 formulários (IDs 15, 16, 17, 18, 92). E-mail nativo suprimido via wpcf7_skip_mail. Processamento assíncrono via wpcf7_mail_sentwp_schedule_single_event()
Elementor4.1.1Page builder para homepage, sobre, serviços, rota-reforma. Páginas de documentação e lead usam templates PHP puros
WP Armour — Honeypot Anti Spam2.3.04Honeypot anti-spam nos formulários CF7 (campo oculto armadilha para bots)
WP Mail SMTP4.8.0Roteamento SMTP via Locaweb (mail.ita.locaweb.com.br:587, user Site@bonoconta.com.br). Fallback: phpmailer nativo
Yoast SEO27.7Title templates, meta descriptions, sitemap XML, OG tags. 6 schemas JSON-LD adicionais via functions.php sobrepõem e complementam o Yoast

19. CRM — TWENTY CRM (GraphQL)

ItemValor
CRMTwenty CRM (self-hosted)
URL baseget_option('bc_crm_api_url') — ex: https://crm.bonoconta.com.br
API Keyget_option('bc_crm_api_key') — Bearer token no header Authorization: Bearer {key}
ProtocoloGraphQL — POST /graphql (workspace) ou /metadata
Arquivoinc/suitecrm-api.php
Timeout20 segundos por requisição
Content-Typeapplication/json

5 Funções de suitecrm-api.php

FunçãoLinhaDescrição
bc_twenty_graphql()L33Client base — executa query/mutation GraphQL com Bearer token. Retorna array|null. Usada internamente pelas demais funções.
bc_crm_token()L84Retorna a API key estática do Twenty CRM via get_option('bc_crm_api_key'). Retorna null se não configurada.
bc_crm_lead_exists()L100Verifica via query GraphQL se já existe uma Person com o e-mail informado. Usa filtro emails.primaryEmail.eq. Retorna bool.
bc_crm_push_lead()L136Cria Person + Company no Twenty CRM sem duplicar. Recebe array com nome, email, phone, company, cnpj, service, message. Verifica existência antes de criar. Retorna bool.
bc_crm_get_lead_url()L300Retorna a URL do registro da Person no Twenty CRM (/objects/people/{id}). Usada no e-mail admin para link direto ao CRM. Retorna string vazia se não encontrado.

20. INFRAESTRUTURA — NGINX E PERFORMANCE

ItemConfiguração
CacheFastCGI cache (zone WORDPRESS) — 100MB RAM, 1GB disco, 60min TTL para 200. Bypass: POST, query string, wp-admin, cookies de login.
Cache path/var/cache/nginx/fastcgi — levels=1:2, inactive=60m, max_size=1g
Header de debugX-FastCGI-Cache: HIT/MISS/BYPASS
Gzipgzip on — level 6, min 1000 bytes, tipos: text/plain, text/css, text/xml, text/javascript, application/json, application/javascript, application/xml, image/svg+xml
SSLTLSv1.2 + TLSv1.3 — ciphers ECDHE-ECDSA/RSA-AES128/256-GCM-SHA256/384 — Let's Encrypt via Certbot
PHP timeoutfastcgi_read_timeout 300 (5 min) — necessário para o pipeline de enriquecimento
Keepalivetimeout 65s, requests 1000
Worker processesauto (número de CPUs)

Rate Limiting (nginx.conf)

ZoneRateBurstAplicado em
wp_login5 req/min5 nodelay/wp-login.php
contact_form10 req/minFormulários CF7 (AJAX)
ajax_public15 req/min80 nodelay/wp-admin/admin-ajax.php (anônimos)

Security Headers

HeaderValor
X-Frame-OptionsSAMEORIGIN
X-Content-Type-Optionsnosniff
X-XSS-Protection1; mode=block
Referrer-Policystrict-origin-when-cross-origin
Permissions-Policycamera=(), microphone=(), geolocation=()

Redirects e locations especiais

CondiçãoAção
HTTP → HTTPS301 para https://bonoconta.com.br$request_uri
www → sem www301 para https://bonoconta.com.br$request_uri
/stack-tecnico.html301 para /stack-tecnico
/?SuportBR=1Set cookie bc_adm + redirect para /wp-admin/ (acesso admin secreto)
/wp-login.php sem cookie302 para homepage (bloqueia acesso direto)
/wp-admin/ sem cookie302 para homepage (bloqueia acesso direto)
Assets estáticosexpires 1y + Cache-Control: public, immutable + Vary: Accept-Encoding
Arquivos bloqueadosdeny all: .ht, .git, .env, wp-config.php, wp-includes/*.php, uploads/*.php, xmlrpc.php

Logs

ArquivoConfiguração
Access log/var/log/nginx/bonoconta_access.log — formato main, buffer 32k
Error log/var/log/nginx/bonoconta_error.log — level warn

21. PÁGINAS WORDPRESS

IDSlugStatusTemplateObservação
7/inicio/publishfront-page.phpHomepage — Elementor page builder
8/sobre/publishpage-sobre.phpSobre a empresa — Elementor
9/servicos/publishpage-servicos.phpCatálogo de serviços — Elementor
10/rota-reforma-tributaria/publishpage-rota-reforma-tributaria.phpPrograma Rota Reforma Tributária — Elementor
11/blog/publishpage.php (padrão)Índice do blog — template padrão WP
12/fale-conosco/publishpage-fale-conosco.php5 formulários CF7 (IDs 15, 16, 17, 18, 92) + modal LGPD
13/obrigado/publishpage-obrigado.phpConfirmação pós-formulário
14/politica-de-privacidade/publishpage-privacidade.phpPolítica LGPD
106/painel-leads/publishpage-painel-leads.phpPainel admin de leads — requer cookie bc_adm
111/stack-tecnico/publishpage-stack-tecnico.phpEsta página — base de conhecimento técnica

Formulário enviado!

Recebemos seus dados e entraremos em contato em breve.