Serviço Completo de GEO
Da diagnóstico à entrega, um ciclo completo, não apenas recomendações:
Rastrear → Diagnosticar → Amostrar respostas de IA → Gerar tickets → Produzir ativos → Relatar → Verificar automaticamente → Pacote de entrega ao cliente
O julgamento central é apenas um: O objetivo do GEO não é o ranking, é se aquela frase na resposta da IA está de acordo com o seu discurso. Portanto, a unidade mínima não é a página, mas sim o bloco de fatos extraível.
Diretório do projeto: /Users/brucejan/geo. Cada cliente/produto fica em um work/<slug>/.
Uso Mais Rápido: Fornecer um URL
python3 scripts/geo.py new --url https://exemplo.com --market both
Nove etapas totalmente automatizadas: criar projeto → rastrear site oficial → diagnosticar → derivar automaticamente fatos da marca/concorrentes/banco de perguntas → rediagnosticar → amostrar respostas de IA → tickets e blueprint de construção → ativos e relatórios → três entregáveis.
Gera work/<slug>/deliverables/:
| Arquivo | Resposta |
|---|---|
1-RelatorioDiagnosticoGEO.html | Como está agora |
2-PlanoOtimizacaoGEO.html | Como deveria ser e por quê |
3-PlanoExecucaoGEO.html | Quem faz o quê, quando e o que significa 'concluído' |
Os fatos da marca derivados automaticamente devem ser revisados manualmente – o bootstrap extrai apenas do corpo do site oficial. O que não conseguir extrair é marcado como "a confirmar", nunca preenche com suposições. Os campos marcados como "a confirmar" (data de fundação, entidade legal, clientes citáveis, etc.) precisam ser preenchidos por você ou explicitamente informados como não divulgáveis.
Dois Modos de Uso
Interface (Recomendado)
python3 scripts/geo.py ui # Padrão http://127.0.0.1:8765
Fluxo completo na interface, sem necessidade de decorar comandos: criar projeto, editar configuração e banco de perguntas, escrever fichas de fatos, executar qualquer etapa ou ciclo completo com um clique (com logs em tempo real), alterar status de tickets, visualizar ativos, importar planilhas de amostragem manual, abrir pacotes de entrega.
A interface tem tema escuro e quatro seções principais (AtlasGEO): Situação Atual (visão geral / desempenho dos mecanismos / comparação com concorrentes / banco de perguntas) → Diagnóstico (diagnóstico de lacunas / mapa de posicionamento / banco de fatos da marca) → Melhoria (plano de ação / estação de trabalho de conteúdo) → Resultados (verificação de eficácia / relatórios e entrega), além de configurações e guia de integração em três etapas. Métricas unificadas: Pontuação de Saúde GEO (cinco itens ponderados, pesos normalizados para itens não medidos), Taxa de Menção, Quota de Citação, Posicionamento, Tarefas, Conteúdo. O título da visão geral é uma conclusão gerada automaticamente pelos dados; todos os números vêm da mesma amostragem; se não for calculável, exibe "Não medido", sem inventar números. As tarefas rodam em processos filhos em segundo plano; fechar a página não as interrompe. Apenas uma tarefa por projeto é permitida simultaneamente para evitar conflitos no mesmo audit.json.
Usa apenas a biblioteca padrão para o servidor, zero dependências externas no frontend, funcional offline.
Linha de Comando
python3 scripts/geo.py serve --slug <projeto>
Rastrear → Diagnosticar → Amostrar → Tickets → Ativos → Relatório → Verificar ciclo anterior → Empacotar entrega. Tudo isso é feito. A saída está em work/<slug>/delivery/<data>/, pronta para enviar ao cliente.
Para um novo cliente, siga os passos 0–2 abaixo para construir a base. Depois, execute apenas este comando em cada ciclo.
O Que Ler Primeiro
- Leitura obrigatória a cada vez:
references/method.md(critérios de pontuação e fontes de todos os critérios; o script é sua implementação em código) - Leitura obrigatória ao priorizar fontes externas:
references/cn-source-ranking.md(ranking real de 187.818 citações no CN-GEO. O site oficial representa apenas 1,37%; esse número muda a alocação de recursos) - Para plataformas nacionais:
references/cn-platforms.md| Para plataformas globais:references/global-platforms.md - Para escrever conteúdo/alterar páginas:
references/content-patterns.md - Para métodos mais profundos ou dados brutos:
references/sources.md(inclui explicação da seleção de GEORank / GEOFlow) - Para anomalias de amostragem/plataforma, consulte primeiro:
references/known-issues.md(timeout do Doubao, modelo de endpoint 302 nacional/internacional, casca vazia SPA, filtro de escopo llms.txt)
Não dê conselhos de GEO baseados em experiência. Cada recomendação deve ser rastreável a um número medido no method.md; se não puder justificar, não inclua no plano.
Passo 0 · Criar Projeto
python3 scripts/geo.py init --url <site_oficial_produto> --name <nome_da_marca> --market both
--market aceita cn / global / both.
Mercado duplo não é "fazer também no exterior", são dois campos de batalha paralelos – banco de perguntas, conteúdo, lista de concorrentes e métricas são todos separados. Disciplina na seção 5 de global-platforms.md.
Passo 1 · Entender o Produto, Construir a Base de Fatos
Leia o site oficial + materiais fornecidos pelo usuário (PDF, PPT, documentos, artigos de WeChat, etc.) e complete o geo.json:
brand: nome oficial, apelidos e erros de escrita comuns (fundação para desambiguação da marca), linhas de produto, setor, público-alvo, objetivos de negóciocompetitors: 3–6 concorrentes reais, com apelidos. No primeiro ciclo, pode ficar vazio – execute uma rodada de amostragem de perguntas do tipo "recomendação" e deduza o conjunto competitivo real a partir das respostas da IA. É mais preciso do que chutar. Em mercado duplo, os concorrentes nacionais e internacionais geralmente não são os mesmos; liste todos (as métricas de ranking são calculadas em relação a esta lista; omitir um concorrente real superestimará sua posição)
Ao mesmo tempo, escreva o cartão de fatos da marca em work/<slug>/content/facts.md; modelo na seção 1 de content-patterns.md.
Cada fato deve ter um nível de evidência A–E; sem fonte, marque como "a confirmar". Não invente.
Este arquivo é a entrada para todos os ativos gerados posteriormente – llms.txt, JSON-LD, blocos de definição vêm dele.
Se o material for insuficiente, peça diretamente ao usuário. Não adivinhe capacidades ou preços do produto.
Passo 2 · Construir o Banco de Perguntas
O banco de perguntas determina o que amostrar, sobre o que escrever conteúdo e como calcular as métricas. Para cada um dos sete grupos, crie 3–6 perguntas: Recomendação / Comparação / Alternativa / Preço / Risco / Verificação de Marca / Cenário.
Cada pergunta deve ter o campo market, que o script usa para roteamento – perguntas em chinês não vão para o Perplexity, perguntas em inglês não vão para o Doubao:
{"id": "q001", "group": "Recomendação", "market": "cn", "text": "Quais são os bons SaaS de operação de privacidade no mercado nacional?"}
{"id": "q101", "group": "Recomendação", "market": "global", "text": "What's the best CRM for small B2B teams in 2026?"}
{"id": "q900", "group": "Verificação de Marca", "market": "both", "text": "O que é a <marca>?"}
cn: perguntas em chinês coloquial, sem tradução rebuscada |global: perguntas em inglês nativas, não tradução automáticabothapenas para perguntas de verificação de marca. Observe que este tipo de pergunta menciona a marca pelo nome, então as respostas necessariamente repetirão o nome da marca. O script as classificará separadamente como "Reconhecimento de Marca", não as misturando com as métricas de visibilidade.
Ciclo Periódico (o serve faz tudo automaticamente; aqui está a explicação de cada etapa)
Rastreamento + Diagnóstico
Pontua em seis dimensões: Rastreabilidade / Comprimento / Estrutura / Blocos Extraíveis / Sinais de Autoridade / Adequação à Pergunta. Ao ler os resultados, verifique primeiro quatro coisas:
- Páginas SPA vazias (
word_countpróximo de 0) – a lesão mais fatal de sites nacionais; o rastreador de IA vê uma página em branco - O robots.txt bloqueia rastreadores de IA? – Se bloquear, nada mais importa
language_coverageé equivalente em chinês e inglês? – Fazer mercado global sem páginas nativas em inglês é P0block_gapqual bloco está mais ausente? – Prioridade número 1 na engenharia de conteúdo
Amostragem de Respostas de IA
| Mercado | Plataforma | Variável | Descrição |
|---|---|---|---|
| Nacional | ZhiPu GLM | ZHIPUAI_API_KEY | Endpoint compatível com OpenAI, sem internet |
| Nacional | Doubao | ARK_API_KEY | Volcano Ark; para internet, é necessário ativar o plugin de conteúdo no console; caso contrário, degradação automática |
| Nacional | DeepSeek | DEEPSEEK_API_KEY | Sem internet, mede o reconhecimento da marca no conhecimento parametrizado do modelo |
| Nacional | Kimi | MOONSHOT_API_KEY | Padrão sem internet |
| Nacional | MiniMax | MINIMAX_API_KEY | Endpoint compatível com OpenAI, sem internet |
| Global | Gemini | GEMINI_API_KEY | Endpoint compatível com OpenAI, sem grounding |
| Global | OpenAI(ChatGPT) | OPENAI_API_KEY | Chat Completions padrão sem internet |
| Global | Claude | ANTHROPIC_API_KEY | Protocolo nativo Anthropic, sem internet |
| Global | Grok | XAI_API_KEY | API xAI, sem internet |
| Global | Perplexity | PERPLEXITY_API_KEY | Internet nativa com citações; melhor qualidade de evidência global |
Coloque as chaves em .env na raiz do projeto (já em .gitignore, permissão 600). O script carrega automaticamente.
No modo 302.AI do Doubao, ele usa a combinação "pesquisa + resposta". Para timeout de pergunta única, leia AI302AI_SEARCH_ASK_TIMEOUT no .env (padrão 45s). Para anomalias de plataforma/endpoint, consulte primeiro references/known-issues.md para não deixar a tarefa em espera.
Para plataformas sem API pública de internet – Pesquisa Nano AI/Baidu AI/Doubao App (nacionais) e ChatGPT Web/Claude Web (globais) – use amostragem manual ou por navegador:
python3 scripts/geo.py sample-sheet --slug <projeto>
python3 scripts/geo.py sample-import --slug <projeto> --file <planilha_amostragem>
Disciplina de critérios (detalhes na seção 4 do method.md):
- Nacional ≠ Global, a taxa de menção média entre mercados não é interpretável; nos relatórios, cada um tem sua própria tabela
- API ≠ Web, Web ≠ App (As fontes do Qianwen Web e App têm apenas 24,5% de sobreposição), registre e calcule separadamente
- Sem o texto original da resposta, captura de tela ou registro do ambiente de amostragem, não marque como "amostragem real"
- A atribuição padrão é "observação correlacionada", a menos que haja janela de linha de base + prompt de controle + comparação com concorrentes
- Seja moderado na frequência de amostragem, cumpra os termos de serviço da plataforma, não faça coleta em massa ou simulação de login
Gerar Tickets plan
Resultados do diagnóstico → tasks.json, esta é a única fonte da verdade para o status de execução. Cada ticket deve ter:
Base (qual item do method.md), papel responsável, carga de trabalho, janela de tempo, critérios de aceitação, mercado.
Sete pacotes de trabalho: Desambiguação de Entidades / Técnico de Página / Matriz de Conteúdo / Sistema de Títulos / Base de Conhecimento / Evidência Externa / Monitoramento do Ciclo.
Ordem de prioridade (seção 6 do method.md):
Problemas de Entrada → Erros Factuais → Lacunas de Blocos Extraíveis → Perguntas de Alto Valor sem Resposta → Fontes Externas (P1, não P2) → Expansão de Cauda Longa.
Fontes externas são P1, não P2, porque o site oficial representa apenas 1,37% das citações em todo o banco. O site oficial é uma fonte de fatos, não uma fonte de citações. O retorno marginal de melhorá-lo de 60 para 90 é muito menor do que conquistar um verbete em um site de ranking.
Produzir Ativos generate
Em work/<slug>/assets/, separados por chinês e inglês:
| Produto | Descrição |
|---|---|
llms.txt / llms.en.txt | Índice oficial de fatos; coloque na raiz do site |
jsonld/*.json | Organization / SoftwareApplication / FAQPage / Article / BreadcrumbList; insira no <head> |
snippets/definition.*.html | Bloco de definição; coloque abaixo do slogan da primeira tela (mantenha o slogan, não afete a conversão) |
snippets/faq.*.html | Bloco de FAQ; a resposta deve estar visível no HTML estático, não em um acordeão puramente JS |
outlines/*.md | Um esboço de conteúdo para cada pergunta-alvo (inclui candidatos a título, estrutura de capítulos, requisitos de contagem de palavras e blocos extraíveis) |
drafts/*.md | Com --draft, chama o LLM configurado para gerar o rascunho completo do texto |
Divisão de trabalho: Ativos estruturais são gerados deterministicamente pelo código (não perdem campos de schema); o corpo do artigo é escrito por você com base no esboço – o código não escreve textos promocionais de qualidade. Rascunhos de --draft devem ter os fatos verificados manualmente antes da publicação.
Verificação Automática verify
Re-rastrear o site → Executar o verificador → Atualizar status dos tickets. Esta é a linha divisória entre "serviço" e "recomendação":
O que pode ser verificado automaticamente, não depende de alguém dizer que está pronto. Se concluído, muda para done; se regredir, volta para todo.
Para itens que não podem ser determinados programaticamente (por exemplo, se um verbete de enciclopédia foi aprovado), marque como "Aguardando revisão manual". Após confirmação, marque manualmente:
python3 scripts/geo.py task --slug <projeto> --id T-003 --status done --note "Verbete já está no ar"
python3 scripts/geo.py status --slug <projeto> # Painel de progresso
Entrega ao Cliente deliver
Empacotar em work/<slug>/delivery/<data>/: índice de visão geral, relatório de diagnóstico, plano de execução, tabela de tickets (HTML + CSV importável para ferramentas de gerenciamento de projetos), tabela de verificação, mapa de construção, desempenho dos mecanismos / comparação com concorrentes (reutiliza a mesma metodologia de analytics da interface: taxa de menção/quota de citação/reprodução de amostras por mecanismo + matriz concorrente x mecanismo / perguntas perdidas), diretório de ativos, instruções de entrega.
Depois de executar, o que você precisa fazer (parte que o script não faz):
- Leia
reports/latest.mdpara ver o delta: variação da pontuação média, mudança na taxa de menção, novos P0s - Veja o "Top de domínios de fontes realmente citadas pela IA" e a "Comparação com o panorama nacional" – este é o verdadeiro mapa de distribuição do ciclo atual. Use-o para corrigir o plano de fontes externas
- Verifique se há erros factuais nas respostas amostradas (marca errada, confusão de entidades, preço errado, setor errado) → P0 imediato
- Escreva conteúdo com base em
outlines/e atualize o progresso com base emplan.md
Ritmo sugerido: diagnóstico de página semanalmente, amostragem de respostas a cada duas semanas ou mensalmente (amostragem tem custo, as métricas têm ruído inerente; executar com muita frequência não mostra sinais claros).
Todos os Comandos
| Comando | Descrição |
|---|---|
new | ★ Dado apenas um URL, gera automaticamente três entregáveis |
autopilot | Executa o fluxo completo de orientação para um projeto já criado |
bootstrap | Deriva fatos da marca, concorrentes e banco de perguntas a partir do corpo do site oficial |
deliverables | Gera três entregáveis formais (diagnóstico/otimização/execução) |
init | Apenas cria a estrutura do projeto, sem executar o fluxo |
crawl / audit | Rastrear site / Diagnóstico em seis dimensões |
sample / sample-sheet / sample-import | Amostragem via API / Exportar planilha de amostragem manual / Importar planilha preenchida |
plan | Resultados do diagnóstico → Tickets com critérios de aceitação |
generate | Produzir ativos implantáveis (--draft adiciona rascunho do LLM) |
report | Relatório em Markdown + HTML autossuficiente, incluindo delta e comparação com panorama |
verify | Re-rastrear e verificar tickets automaticamente (--no-recrawl usa resultados existentes) |
task / status | Status de ticket individual / Painel do projeto |
deliver | Empacotar entregáveis do cliente |
ui | Interface de fluxo completo: criar projeto, configurar, banco de perguntas, cartões de fatos, execução com um clique, tickets, ativos, entrega |
serve | Fluxo completo em um comando |
cycle | Ciclo leve (rastrear→diagnosticar→amostrar→relatório, sem tickets e entrega) |
list | Listar todos os projetos |
Execução Programada Automática
Use a skill schedule para criar tarefas agendadas:
Execute
python3 /Users/brucejan/geo/scripts/geo.py serve --slug <projeto>toda segunda-feira de manhã. Em seguida, leiawork/<projeto>/reports/latest.md. Se aparecer um novo P0, a taxa de menção cair mais de 10 pontos percentuais, ou algum ticket mudar dedoneparatodo, me avise.
Limites
Faz: Diagnóstico GEO, planos, tickets, engenharia de conteúdo, geração de ativos, monitoramento de respostas de IA, verificação de ciclo, pacotes de entrega ao cliente.
Não faz:
- Rankings de palavras-chave de SEO tradicional, compra e venda de links, lances pagos
- Implementação real de código para criação/alteração de sites (fornece planos e snippets diretamente utilizáveis; a implementação é feita pelo desenvolvedor do cliente)
- Coleta em massa que contorna limites de plataforma, simulação de login, aumento artificial de tráfego
- Inventar fatos da marca, casos de clientes, preços ou qualificações – se não encontrar, marque como "a confirmar" e pergunte ao usuário
Não garante que qualquer plataforma citará uma página específica. O GEO aumenta a probabilidade, não é uma garantia. Esta frase deve ser incluída textualmente ao escrever planos para clientes.
Diretório
/Users/brucejan/geo/
├── SKILL.md
├── references/
│ ├── method.md Critérios de pontuação e fontes de todos os critérios
│ ├── cn-source-ranking.md Ranking real de fontes nacionais (cálculo real do CN-GEO, com script de recálculo)
│ ├── cn-platforms.md Adaptação de plataformas nacionais
│ ├── global-platforms.md Adaptação de plataformas globais
│ ├── content-patterns.md Modelos de conteúdo extraível
│ └── sources.md Índice de materiais (inclui seleção de GEORank / GEOFlow)
├── scripts/
│ ├── geo.py Ponto de entrada CLI principal
│ ├── crawl.py Rastrear site audit.py Diagnóstico em seis dimensões
│ ├── sample.py Amostragem multiplataforma benchmark.py Comparação com panorama nacional
│ ├── tasks.py Sistema de tickets generate.py Geração de ativos
│ ├── verify.py Verificação automática deliver.py Pacote de entrega ao cliente
│ ├── bootstrap.py Derivação automática da base deliverables.py Três entregáveis
│ ├── blueprint.py Mapa de construção
│ ├── dashboard.py Backend da interface ui.html Estação de trabalho frontend
│ ├── jobs.py Tarefas em segundo plano (subprocesso + log em tempo real)
│ └── report.py Renderização de relatórios geolib.py Utilitários compartilhados
└── work/<slug>/
├── geo.json Marca, concorrentes, banco de perguntas, plataformas, objetivos
├── content/facts.md Cartão de fatos da marca (entrada para todos os ativos)
├── evidence/ Snapshot do rastreamento audit.json Resultados do diagnóstico
├── samples/ Respostas amostradas originais metrics/ Métricas do ciclo
├── tasks.json Tickets (única fonte da verdade do status de execução)
├── assets/ Ativos implantáveis
├── reports/ Relatórios do ciclo + latest.md
├── verify/ Resultados da verificação do ciclo
├── delivery/<data>/ Pacote de entrega ao cliente
├── history/ Linhas de base históricas (para calcular delta)
└── plan.md Plano 30/60/90