ummydev/ai-search

Quando o usuário quer tornar um site legível, preciso e citável por assistentes de IA (ChatGPT, Claude, Perplexity, Gemini, Copilot, Google AI Overviews) para que descrevam o produto corretamente e o citem. Use quando o usuário disser "llms.txt", "llms-full.txt", "pesquisa por IA", "GEO", "AEO", "ser citado pelo ChatGPT", "aparecer nas respostas do Perplexity", "permitir crawlers de IA", "GPTBot em robots.txt", "a IA erra nosso preço", "a IA nos confunde com outro produto", "colisão de nome de marca", "Organization schema sameAs" ou "tornar o site legível por agentes". Abrange llms.txt, robots.txt para crawlers de IA, frases de definição, tabelas de comparação e FAQ, preços públicos, dados estruturados Organization e WebSite, e nomenclatura de marca.

O que é ai-search?

Este skill, `ummydev/ai-search`, orienta você a estruturar um site para que assistentes de IA (como ChatGPT, Claude, Perplexity e outros) consigam extrair fatos precisos e citações diretas. Ele se concentra em garantir que cada fato importante (definição, preço, status, plataformas) seja escrito uma única vez e renderizado em todos os lugares – páginas, `/llms.txt`, dados estruturados JSON-LD e metadados. O workflow inclui desde a criação de uma ficha de fatos centralizada até a publicação de `/llms.txt` e `/llms-full.txt`, configuração de `robots.txt` para permitir crawlers de IA (como OAI-SearchBot, ChatGPT-User, ClaudeBot), e a adição de frases de definição no topo das páginas principais. Também cobre boas práticas para tabelas de comparação, FAQ, preços públicos, dados de Organization/WebSite para evitar colisão de nomes, e uma checklist para verificar tudo mensalmente. É útil para qualquer produto SaaS ou site que queira ser descrito corretamente por assistentes de IA e aparecer em respostas de busca, sem depender de palpites ou citações incorretas.

Funciona com✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/ummydev/marketing-team-skills/tree/HEAD/skills/ai-search

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

Pesquisa por IA

Um assistente que responde "o que é X", "preço do X" ou "melhor ferramenta para Y" busca algumas páginas, extrai frases e linhas de tabela, e as cita. Se um fato não está na página como texto simples, o assistente chuta ou cita quem o escreveu. O trabalho: tornar o produto fácil de descrever corretamente a partir de uma única busca.

Um princípio percorre cada etapa: escreva cada fato uma vez e renderize-o em todos os lugares. A definição, status (beta, aberto para inscrição, geralmente disponível), preços, plataformas suportadas e URLs principais residem em um único arquivo fonte; páginas, llms.txt e dados estruturados leem dele. Fatos copiados manualmente divergem.

Fluxo de trabalho

1. Escreva a ficha de fatos

Crie content/facts.ts (ou JSON/YAML) com: nome e nomes alternativos, a definição em uma frase, para quem é, status, planos e preços, plataformas ou integrações, URLs de páginas principais e perfis oficiais (GitHub, X, LinkedIn, Product Hunt). Verifique cada item no produto real antes de escrever.

2. Publique /llms.txt

Siga llmstxt.org: um H1 com o nome, um resumo em blockquote, alguns fatos simples, depois seções H2 de links escritas como - [Título](url): o que cobre. Uma seção intitulada Optional marca links que um assistente pode ignorar.

# Acme AI

> Acme AI é uma ferramenta de conciliação de faturas que reconcilia pagamentos do Stripe com depósitos bancários para pequenas equipes financeiras. Funciona no navegador e se conecta ao Stripe e Plaid.

- Para quem é: líderes financeiros em empresas com 1 a 50 pessoas que conciliam pagamentos manualmente.
- Status: aberto para inscrição (desde novembro de 2026).
- Preços (https://acme.example/pricing): Grátis, $0, até 50 faturas por mês; Pro, $29/mês, faturas ilimitadas; Team, $79/mês, até 10 assentos. Preços em USD.
- Não confundir com: Acme Anvil, uma empresa de hardware não relacionada.

## Páginas principais
- [Preços](https://acme.example/pricing): planos, limites e o que está incluído.
- [Acme AI vs Concorrente](https://acme.example/vs/concorrente): comparação de funcionalidades e preços, verificado em 2026-11-06.

## FAQ
- Acme AI é gratuito? Sim, até 50 faturas por mês. Pro e Team são pagos.

## Opcional
- [Blog](https://acme.example/blog): atualizações do produto e guias.

Gere-o a partir da ficha de fatos e metadados da página (um manipulador de rota ou script de build) para que uma nova página apareça sem edições manuais. Sirva-o com status 200, como text/plain ou text/markdown; charset=utf-8, sem login, redirecionamento ou JavaScript. Verifique:

curl -sI https://acme.example/llms.txt | head -5        # 200 e um tipo de conteúdo texto
curl -s  https://acme.example/llms.txt | head -30

3. Opcionalmente adicione /llms-full.txt

O texto Markdown completo das páginas que você mais deseja que sejam citadas (produto, preços, comparações, documentação), cada uma sob seu próprio # Título com uma linha Fonte: <url>. Gere no momento da build. Deixe de fora o arquivo do blog e qualquer coisa desatualizada.

4. Link para ele

Coloque um link simples llms.txt no rodapé e, opcionalmente, <link rel="alternate" type="text/markdown" href="/llms.txt"> no <head>. Um arquivo para o qual nada linka é encontrado apenas por crawlers que adivinham o caminho.

5. Permita crawlers de IA (robots.txt e CDN)

User-agentProprietárioUsado para
OAI-SearchBotOpenAIÍndice de pesquisa do ChatGPT
ChatGPT-UserOpenAIBuscar uma página que um usuário perguntou
GPTBotOpenAITreinamento de modelo
Claude-SearchBot / Claude-User / ClaudeBotAnthropicÍndice de pesquisa / buscas de usuário / treinamento
PerplexityBot / Perplexity-UserPerplexityÍndice de pesquisa / buscas de usuário
Google-ExtendedGoogleToken para treinamento e fundamentação do Gemini; não afeta a Pesquisa Google ou AI Overviews
BingbotMicrosoftÍndice do Bing, do qual as respostas do Copilot se originam

Os agentes de busca e busca de usuário decidem se você pode ser citado. Agentes de treinamento são uma escolha de negócio; um produto que deseja ser recomendado geralmente os permite também.

User-agent: *
Allow: /
Disallow: /api/
Disallow: /app/

User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: GPTBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: ClaudeBot
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Google-Extended
Allow: /
Disallow: /api/
Disallow: /app/

Sitemap: https://acme.example/sitemap.xml

Um crawler obedece apenas ao grupo que o nomeia, portanto um grupo nomeado deve repetir cada Disallow, ou então abrirá seus caminhos privados. robots.txt também não pode substituir a CDN: algumas oferecem um interruptor "bloquear bots de IA" que retorna 403 independentemente do que robots.txt diz. Verifique pontualmente, depois confirme os hits reais de crawlers no relatório de bots da CDN ou logs do servidor (CDNs que verificam IPs de bots podem tratar um User-Agent falsificado de forma diferente):

curl -s -o /dev/null -w '%{http_code}\n' -A 'Mozilla/5.0 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)' https://acme.example/pricing

6. Coloque uma definição em uma frase no topo de cada página principal

Bem abaixo do H1, em HTML renderizado pelo servidor: " é um(a) que <faz o quê> para ." A segunda frase dá o diferencial. Reutilize a mesma frase na página inicial, em llms.txt, em Organization.description, em listagens de diretórios e em bios sociais. Um slogan ("Finanças, reimaginadas") não dá nada para um assistente citar. Muitos buscadores de IA não executam JavaScript, então verifique o HTML bruto:

curl -s https://acme.example/ | grep -c "é uma ferramenta de conciliação de faturas"     # espere 1 ou mais

7. Tabelas de comparação e FAQ

  • Tabelas: um <table> HTML real, uma linha por produto, colunas que os compradores perguntam (preço, plataformas, código aberto, limite principal). Date-a ("Verificado em 2026-11-06"). Tire cada fato do próprio site do fornecedor, documentação, página de preços ou API do GitHub. Escreva "Não publicado" quando um fornecedor não publica algo; nunca estime.
  • FAQ: a pergunta como título, nas palavras do pesquisador; uma resposta de 2 a 4 frases que funcione sozinha, com a primeira frase respondendo-a. Cubra as perguntas que os assistentes erram: preço, "é gratuito", "funciona com X", "é o mesmo que <homônimo>". A marcação FAQPage é opcional; o Q&A visível é o que é citado.

8. Torne os preços públicos

Uma página /pricing com nomes de planos, preços, moeda, período de cobrança e limites como texto, não apenas em uma imagem ou calculadora. Espelhe em llms.txt e em SoftwareApplication.offers. Respostas e listagens de diretórios precisam de um preço ou um modelo de preços (gratuito, freemium, pago); sem um, eles chutam ou pulam você. Se os planos pagos não estiverem ativos, diga ("Pro: em breve; tudo é gratuito até lá").

{ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "Acme AI",
  "applicationCategory": "BusinessApplication", "operatingSystem": "Web",
  "offers": [ { "@type": "Offer", "name": "Grátis", "price": "0", "priceCurrency": "USD" },
              { "@type": "Offer", "name": "Pro", "price": "29", "priceCurrency": "USD" } ] }

9. Dados de Organization e WebSite quando o nome colide

Se pesquisar seu nome de marca puro retorna outro produto primeiro, escolha uma forma distinta ("Acme AI") e use-a em todos os lugares, com dados estruturados que vinculam as variantes a uma entidade:

{ "@context": "https://schema.org", "@type": "Organization",
  "name": "Acme AI", "alternateName": ["Acme", "acme.example"],
  "url": "https://acme.example/", "logo": "https://acme.example/logo.png",
  "description": "Acme AI é uma ferramenta de conciliação de faturas que reconcilia pagamentos do Stripe com depósitos bancários para pequenas equipes financeiras.",
  "sameAs": ["https://github.com/acme-ai", "https://x.com/acmeai", "https://www.linkedin.com/company/acme-ai"] }

Adicione um objeto WebSite com o mesmo name e alternateName; o Google o usa para o nome do site nos resultados. Liste em sameAs apenas perfis que você controla e que linkam de volta ao site.

10. Mantenha o sufixo da marca consistente

Um sufixo em todos os lugares: | Acme AI nos títulos, a mesma string em og:site_name, o H1 de llms.txt, bios sociais e a organização do GitHub. Mantenha os títulos dentro de 60 caracteres (cerca de 30 para chinês, japonês e coreano), palavra-chave primeiro; adicione o sufixo apenas quando couber.

11. Verifique o que os assistentes realmente dizem

Mensalmente, e após grandes mudanças, faça de 5 a 10 perguntas manualmente no ChatGPT (com busca ativada), Perplexity, Claude, Gemini e Copilot: "O que é Acme AI?", "Preços do Acme AI", "melhor para <público>", "alternativas ao ", "Acme AI vs ". Uma pergunta de cada vez na interface normal; não scripte chats UIs. Registre data, assistente, pergunta, se você é mencionado, qual URL é citado e qualquer fato errado em docs/seo/ai-answers.md. Corrija a página fonte por trás de cada fato errado, depois verifique novamente. Para tráfego, segmente a análise por referenciador: chatgpt.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com.

Checklist

  • Ficha de fatos existe; páginas, llms.txt e JSON-LD leem dela
  • /llms.txt retorna 200 como texto, é gerado e linkado no rodapé
  • robots.txt permite os agentes de IA e repete as negações; a CDN não os bloqueia
  • Cada página principal abre com uma definição em uma frase no HTML bruto
  • Tabelas de comparação são datadas e com fontes; desconhecidos dizem "Não publicado"
  • Respostas do FAQ funcionam sozinhas e cobrem preço, "é gratuito" e confusão de nome
  • /pricing é público; llms.txt e offers correspondem a ele
  • Organization e WebSite carregam name, alternateName, description e sameAs
  • Um sufixo de marca em todos os lugares; títulos dentro de 60 caracteres
  • Respostas de assistentes registradas; fatos errados rastreados até uma página e corrigidos

Armadilhas que enfrentamos

  • Sem preços públicos. /pricing retornava 404, llms.txt e SoftwareApplication não tinham ofertas, e nossa própria tabela de comparação precisava dizer "Não publicado" para nós. Uma página /pricing com três planos em texto, espelhada em llms.txt e offers, corrigiu isso; tiers pagos são marcados como "em breve".
  • Deriva de status. Após a abertura de inscrições, cerca de 300 arquivos em 9 idiomas, incluindo llms.txt, ainda diziam "acesso antecipado". O status agora vem de uma única constante.
  • Um arquivo para o qual ninguém linka. Uma auditoria não encontrou nenhuma página linkando para llms.txt, nenhum llms-full.txt e nenhum lastmod no sitemap.
  • Substituição de grupo em robots.txt. Dar aos crawlers de IA seu próprio grupo sem repetir as negações teria aberto os caminhos da API e de login para eles.
  • Colisão de marca. Pesquisar nosso nome de marca puro retornava primeiro um aplicativo de agendamento de tripulação com o mesmo nome. Mudamos para " AI" nos títulos, alternateName e sameAs.
  • Títulos truncados e inconsistentes. 49 títulos em inglês tinham 57 a 88 caracteres com sufixos mistos. Reduzimos para 60 ou menos, palavra-chave primeiro, sufixo apenas quando couber.
  • Buscas não confiáveis de páginas de concorrentes. A busca de um subagente de pesquisa pela página de preços de um concorrente retornou algo que parecia adulterado; confirmamos em um navegador real antes de publicar. A página de preços de outro fornecedor retornou 403 para o buscador, então pegamos os preços da documentação deles e dissemos de onde vieram.
  • Escrever "gratuito" cedo demais. Até que os preços fossem publicados, escrevemos "não publicado", não "gratuito". Um assistente repete o que a página diz.

Skills relacionados

  • seo-page: o template de página onde a definição, tabela e FAQ vivem.
  • competitor-pages: páginas de comparação e alternativas, que os assistentes citam pesadamente.
  • programmatic-pages: geração de seções de llms.txt e dados estruturados em escala.
  • multilingual-seo: definições localizadas, títulos e comprimento de sufixo por idioma.
  • keyword-research, trend-keywords: as perguntas a responder e os prompts a testar.
  • index-push: fazer as páginas serem rastreadas; o índice do Bing alimenta o Copilot.
  • seo-daily-report: visitas referidas por IA como sua própria linha no relatório.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

ummydev/index-push

When the user wants to get new or changed pages crawled and indexed by Google and Bing quickly, instead of waiting weeks for the sitemap to be read. Use after any deploy that adds or updates pages, and when the user says "get this indexed", "request indexing", "submit to Google", "submit URLs to Bing", "IndexNow", "ping search engines", "resubmit the sitemap", "why isn't my page indexed", "Discovered – currently not indexed", "URL is unknown to Google", "Quota Exceeded in Search Console" or "indexing queue". Covers IndexNow, Search Console URL Inspection and sitemaps, Bing Webmaster URL submission, a prioritized queue file, and diagnosing pages that stay out of the index.

ummydev/remotion-video

When the user wants to make a vertical promo video of their own software product in code with Remotion, rebuilding the product's real UI instead of screen-recording it, with a TTS voice-over, captions timed to the voice and camera moves that zoom into details. Use when the user says "Remotion", "make a product video", "faceless demo video", "UI motion video", "programmatic video", "product reel", "animate our UI", "render the video", or wants a TikTok or Reels video about their app that an agent can re-render after every change.

ummydev/short-video-formats

When the user wants to choose or plan the format of a promo short video for TikTok, Instagram Reels, YouTube Shorts or Xiaohongshu, especially for a software product, dev tool or AI agent. Covers the four formats that carry this category (talking head over a demo, phone filming the screen, faceless UI demo, talking-head open into full-screen demo), screen layout rules, hooks and endings like "comment X and I'll send it", and how to make an AI presenter. Use when the user says "what kind of video should we make", "video format", "talking head", "faceless video", "AI presenter", "AI avatar", "UGC style", "hook ideas", "how should the first frame look", "comment to get the link", or "视频形式".

ummydev/video-retro

When the user wants to review how their short videos performed on TikTok, Instagram Reels or other platforms and decide what to make next. Covers reading views, likes, comments, saves and follows without scraping, the stats log, 24-hour and 72-hour checks, comparing topics, formats and hooks, the daily report and recording what to change. Use when the user says "how did the video do", "video stats", "复盘", "retro", "which videos worked", "why did this flop", "weekly video report", "update the stats", or at the start or end of a short-video working day.

Habilidades Relacionadas