liangdabiao/geo

Pipeline completo de GEO (Generative Engine Optimization): dado um URL de site de produto e materiais de apresentação, realiza diagnóstico do site e amostragem de respostas de IA, gera tickets de execução com critérios de aceitação, produz ativos implantáveis (llms.txt / JSON-LD / definição / FAQ / esboços e rascunhos), verifica automaticamente o fechamento dos tickets e empacota entregáveis prontos para o cliente. Pode ser reexecutado periodicamente para operação contínua de GEO e relatórios mensais. Atende aos mercados nacional e internacional em paralelo.

O que é geo?

Esta skill oferece um serviço completo de GEO (Generative Engine Optimization), indo do diagnóstico à entrega final. Dado um URL de site de produto e materiais de apresentação, ela realiza diagnóstico do site e amostragem das respostas de IA, gerando tickets de execução com critérios de aceitação claros. A skill também produz ativos implantáveis como arquivos llms.txt, JSON-LD, blocos de definição, FAQ, além de esboços e rascunhos de conteúdo. Um ponto fundamental é a verificação automática do fechamento dos tickets, garantindo que as ações foram realmente implementadas, e o empacotamento de entregáveis prontos para o cliente final. A abordagem é dupla, atendendo simultaneamente o mercado chinês (cobrindo plataformas como ZhiPu GLM, Doubao, DeepSeek, Kimi, MiniMax, Nano AI, Baidu AI) e o mercado global (cobrindo Gemini, ChatGPT, Claude, Grok, Perplexity), com bancos de perguntas e indicadores separados para cada mercado. A skill é acionada por comandos como "fazer GEO", "otimização de mecanismo generativo", "tornar meu produto recomendado por IA", "não somos encontrados na busca de IA" ou ao fornecer um URL de produto para otimização de visibilidade em IA. O fluxo completo inclui: rastreamento, diagnóstico, amostragem de respostas de IA, geração de tickets, produção de ativos, relatórios, verificação automática e pacote de entrega ao cliente.

Funciona com✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/liangdabiao/dsh-geo-optimizer/tree/HEAD/skills/geolook

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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/:

ArquivoResposta
1-RelatorioDiagnosticoGEO.htmlComo está agora
2-PlanoOtimizacaoGEO.htmlComo deveria ser e por quê
3-PlanoExecucaoGEO.htmlQuem 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ócio
  • competitors: 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ática
  • both apenas 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:

  1. Páginas SPA vazias (word_count próximo de 0) – a lesão mais fatal de sites nacionais; o rastreador de IA vê uma página em branco
  2. O robots.txt bloqueia rastreadores de IA? – Se bloquear, nada mais importa
  3. language_coverage é equivalente em chinês e inglês? – Fazer mercado global sem páginas nativas em inglês é P0
  4. block_gap qual bloco está mais ausente? – Prioridade número 1 na engenharia de conteúdo

Amostragem de Respostas de IA

MercadoPlataformaVariávelDescrição
NacionalZhiPu GLMZHIPUAI_API_KEYEndpoint compatível com OpenAI, sem internet
NacionalDoubaoARK_API_KEYVolcano Ark; para internet, é necessário ativar o plugin de conteúdo no console; caso contrário, degradação automática
NacionalDeepSeekDEEPSEEK_API_KEYSem internet, mede o reconhecimento da marca no conhecimento parametrizado do modelo
NacionalKimiMOONSHOT_API_KEYPadrão sem internet
NacionalMiniMaxMINIMAX_API_KEYEndpoint compatível com OpenAI, sem internet
GlobalGeminiGEMINI_API_KEYEndpoint compatível com OpenAI, sem grounding
GlobalOpenAI(ChatGPT)OPENAI_API_KEYChat Completions padrão sem internet
GlobalClaudeANTHROPIC_API_KEYProtocolo nativo Anthropic, sem internet
GlobalGrokXAI_API_KEYAPI xAI, sem internet
GlobalPerplexityPERPLEXITY_API_KEYInternet 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:

ProdutoDescrição
llms.txt / llms.en.txtÍndice oficial de fatos; coloque na raiz do site
jsonld/*.jsonOrganization / SoftwareApplication / FAQPage / Article / BreadcrumbList; insira no <head>
snippets/definition.*.htmlBloco de definição; coloque abaixo do slogan da primeira tela (mantenha o slogan, não afete a conversão)
snippets/faq.*.htmlBloco de FAQ; a resposta deve estar visível no HTML estático, não em um acordeão puramente JS
outlines/*.mdUm 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/*.mdCom --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):

  1. Leia reports/latest.md para ver o delta: variação da pontuação média, mudança na taxa de menção, novos P0s
  2. 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
  3. Verifique se há erros factuais nas respostas amostradas (marca errada, confusão de entidades, preço errado, setor errado) → P0 imediato
  4. Escreva conteúdo com base em outlines/ e atualize o progresso com base em plan.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

ComandoDescrição
new★ Dado apenas um URL, gera automaticamente três entregáveis
autopilotExecuta o fluxo completo de orientação para um projeto já criado
bootstrapDeriva fatos da marca, concorrentes e banco de perguntas a partir do corpo do site oficial
deliverablesGera três entregáveis formais (diagnóstico/otimização/execução)
initApenas cria a estrutura do projeto, sem executar o fluxo
crawl / auditRastrear site / Diagnóstico em seis dimensões
sample / sample-sheet / sample-importAmostragem via API / Exportar planilha de amostragem manual / Importar planilha preenchida
planResultados do diagnóstico → Tickets com critérios de aceitação
generateProduzir ativos implantáveis (--draft adiciona rascunho do LLM)
reportRelatório em Markdown + HTML autossuficiente, incluindo delta e comparação com panorama
verifyRe-rastrear e verificar tickets automaticamente (--no-recrawl usa resultados existentes)
task / statusStatus de ticket individual / Painel do projeto
deliverEmpacotar entregáveis do cliente
uiInterface de fluxo completo: criar projeto, configurar, banco de perguntas, cartões de fatos, execução com um clique, tickets, ativos, entrega
serveFluxo completo em um comando
cycleCiclo leve (rastrear→diagnosticar→amostrar→relatório, sem tickets e entrega)
listListar 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, leia work/<projeto>/reports/latest.md. Se aparecer um novo P0, a taxa de menção cair mais de 10 pontos percentuais, ou algum ticket mudar de done para todo, 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

Habilidades Relacionadas