CommunityProgramación y desarrollogithub.com

ummydev/ai-search

Cuando el usuario quiere que un sitio web sea legible, preciso y citable para asistentes de IA (ChatGPT, Claude, Perplexity, Gemini, Copilot, Google AI Overviews) para que describan el producto correctamente y lo citen. Úsalo cuando el usuario diga "llms.txt", "llms-full.txt", "búsqueda IA", "GEO", "AEO", "ser citado por ChatGPT", "aparecer en respuestas de Perplexity", "permitir rastreadores de IA", "GPTBot en robots.txt", "la IA se equivoca con nuestros precios", "la IA nos confunde con otro producto", "colisión de nombre de marca", "Organization schema sameAs" o "hacer el sitio legible para agentes". Cubre llms.txt, robots.txt para rastreadores de IA, frases de definición, tablas comparativas y FAQ, precios públicos, datos estructurados de Organization y WebSite, y naming de marca.

¿Qué es ai-search?

Esta habilidad (skill) guía a un desarrollador o agente de IA para optimizar un sitio web de producto de software para que sea correctamente interpretado, descrito y citado por los principales asistentes de IA (ChatGPT, Claude, Perplexity, Gemini, Copilot y Google AI Overviews). Su objetivo principal es eliminar las conjeturas y errores que los asistentes de IA cometen al no encontrar información clara y estructurada, como precios, definiciones o tablas comparativas. La habilidad cubre múltiples aspectos técnicos: la creación y publicación de archivos `llms.txt` y `llms-full.txt` con hechos clave, la configuración de `robots.txt` para permitir rastreadores específicos de IA (OAI-SearchBot, GPTBot, ClaudeBot, etc.), la implementación de frases de definición de una sola oración en el HTML renderizado del servidor, la creación de tablas comparativas y preguntas frecuentes (FAQ) con fechas y fuentes verificadas, la exposición de precios públicos en texto, metadatos JSON-LD (Organization, WebSite, SoftwareApplication), y la gestión de colisiones de nombre de marca. También incluye un flujo de trabajo para verificar periódicamente lo que los asistentes de IA realmente dicen sobre el producto, registrando errores y corrigiendo las páginas fuente. Está diseñada para plataformas como Claude Code, Cursor u otros agentes que modifican archivos de un proyecto web, y se complementa con otras habilidades como `seo-page`, `competitor-pages`, `programmatic-pages`, y `multilingual-seo`. La habilidad enfatiza el principio de "escribir cada hecho una vez y renderizarlo en todas partes" para mantener la coherencia.

Compatible con✓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 Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Búsqueda IA

Un asistente que responde "¿qué es X?", "precio de X" o "mejor herramienta para Y" obtiene un puñado de páginas, extrae oraciones y filas de tablas, y las cita. Si un hecho no está en la página como texto plano, el asistente adivina o cita a quien lo haya escrito. El trabajo: hacer que el producto sea fácil de describir correctamente con una sola obtención.

Un principio recorre cada paso: escribe cada hecho una vez y renderízalo en todas partes. La definición, el estado (beta, abierto para registro, generalmente disponible), el precio, las plataformas compatibles y las URL clave viven en un archivo fuente; las páginas, llms.txt y los datos estructurados se leen de él. Los hechos copiados a mano se desvían.

Flujo de trabajo

1. Escribir la hoja de hechos

Crea content/facts.ts (o JSON/YAML) con: nombre y nombres alternativos, la definición de una oración, para quién es, estado, planes y precios, plataformas o integraciones, URL de páginas clave y perfiles oficiales (GitHub, X, LinkedIn, Product Hunt). Verifica cada elemento contra el producto en vivo antes de escribirlo.

2. Publicar /llms.txt

Sigue llmstxt.org: un H1 con el nombre, un resumen en bloque de cita, algunos hechos simples, luego secciones H2 de enlaces escritos - [Título](url): qué cubre. Una sección titulada Optional marca los enlaces que un asistente puede omitir.

# Acme AI

> Acme AI es una herramienta de conciliación de facturas que reconcilia los pagos de Stripe con los depósitos bancarios para equipos financieros pequeños. Funciona en el navegador y se conecta a Stripe y Plaid.

- Para quién es: líderes financieros en empresas de 1 a 50 personas que concilian pagos manualmente.
- Estado: abierto para registro (desde 2026-11).
- Precios (https://acme.example/pricing): Gratuito, $0, hasta 50 facturas al mes; Pro, $29/mes, facturas ilimitadas; Team, $79/mes, hasta 10 asientos. Precios en USD.
- No confundir con: Acme Anvil, una empresa de hardware no relacionada.

## Páginas clave
- [Precios](https://acme.example/pricing): planes, límites y lo que está incluido.
- [Acme AI vs Rival](https://acme.example/vs/rival): comparación de características y precios, verificada 2026-11-06.

## FAQ
- ¿Acme AI es gratuito? Sí, hasta 50 facturas al mes. Pro y Team son de pago.

## Opcional
- [Blog](https://acme.example/blog): actualizaciones del producto y guías.

Genéralo desde la hoja de hechos y los metadatos de la página (un manejador de ruta o script de compilación) para que una nueva página aparezca sin ediciones manuales. Sírvuelo con estado 200, como text/plain o text/markdown; charset=utf-8, sin inicio de sesión, redirección ni JavaScript. Verifica:

curl -sI https://acme.example/llms.txt | head -5        # 200 y un tipo de contenido de texto
curl -s  https://acme.example/llms.txt | head -30

3. Opcionalmente agregar /llms-full.txt

El texto Markdown completo de las páginas que más deseas citar (producto, precios, comparaciones, documentación), cada una bajo su propio # Título con una línea Fuente: <url>. Genéralo en tiempo de compilación. Omite el archivo del blog y cualquier cosa desactualizada.

4. Enlazarlo

Pon un enlace simple llms.txt en el pie de página, y opcionalmente <link rel="alternate" type="text/markdown" href="/llms.txt"> en <head>. Un archivo al que nada enlaza solo es encontrado por rastreadores que adivinan la ruta.

5. Permitir la entrada de rastreadores de IA (robots.txt y el CDN)

Agente de usuarioPropietarioUsado para
OAI-SearchBotOpenAIÍndice de búsqueda de ChatGPT
ChatGPT-UserOpenAIObtener una página sobre la que un usuario preguntó
GPTBotOpenAIEntrenamiento de modelos
Claude-SearchBot / Claude-User / ClaudeBotAnthropicÍndice de búsqueda / obtenciones de usuario / entrenamiento
PerplexityBot / Perplexity-UserPerplexityÍndice de búsqueda / obtenciones de usuario
Google-ExtendedGoogleToken para entrenamiento y fundamentación de Gemini; no afecta la Búsqueda de Google ni AI Overviews
BingbotMicrosoftÍndice de Bing, del que Copilot obtiene respuestas

Los agentes de búsqueda y obtención de usuario deciden si puedes ser citado. Los agentes de entrenamiento son una decisión comercial; un producto que quiere ser recomendado generalmente también los permite.

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

Un rastreador obedece solo el grupo que lo nombra, por lo que un grupo nombrado debe repetir cada Disallow, o abrirá tus rutas privadas. robots.txt tampoco puede anular el CDN: algunos ofrecen un interruptor "bloquear bots de IA" que devuelve 403 independientemente de lo que diga robots.txt. Haz una verificación puntual, luego confirma las visitas reales de rastreadores en el informe de bots del CDN o en los registros del servidor (los CDN que verifican las IP de los bots pueden tratar un User-Agent falsificado de manera 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. Pon una definición de una oración al principio de cada página clave

Justo debajo del H1, en HTML renderizado en el servidor: " es una <categoría> que <hace qué> para <quién>." La segunda oración da el diferenciador. Reutiliza la misma oración en la página de inicio, en llms.txt, en Organization.description, en listados de directorios y en biografías de redes sociales. Un eslogan ("Finanzas, reinventadas") no le da nada al asistente para citar. Muchos obtenedores de IA no ejecutan JavaScript, así que verifica el HTML sin procesar:

curl -s https://acme.example/ | grep -c "es una herramienta de conciliación de facturas"     # espera 1 o más

7. Tablas comparativas y FAQ

  • Tablas: un <table> HTML real, una fila por producto, columnas que los compradores preguntan (precio, plataformas, código abierto, límite principal). Ponle fecha ("Verificado 2026-11-06"). Toma cada hecho del propio sitio del vendedor, documentación, página de precios o la API de GitHub. Escribe "No publicado" cuando un vendedor no publique algo; nunca estimes.
  • FAQ: la pregunta como encabezado, en las palabras del buscador; una respuesta de 2 a 4 oraciones que se sostenga por sí misma, con la primera oración respondiéndola. Cubre las preguntas que los asistentes se equivocan: precio, "¿es gratuito?", "¿funciona con X?", "¿es lo mismo que <homónimo>?". El marcado FAQPage es opcional; las Q&A visibles son lo que se cita.

8. Haz públicos los precios

Una página /pricing con nombres de planes, precios, moneda, período de facturación y límites como texto, no solo en una imagen o calculadora. Reflejalo en llms.txt y en SoftwareApplication.offers. Las respuestas y listados de directorios necesitan un precio o un modelo de precios (gratuito, freemium, de pago); sin uno, adivinan o te omiten. Si los planes de pago no están activos, dilo ("Pro: próximamente; todo es gratuito hasta entonces").

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

9. Datos de Organization y WebSite cuando el nombre colisiona

Si buscar el nombre de tu marca simple devuelve primero otro producto, elige una forma distintiva ("Acme AI") y úsala en todas partes, con datos estructurados que vinculen las variantes a una entidad:

{ "@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 es una herramienta de conciliación de facturas que reconcilia los pagos de Stripe con los depósitos bancarios para equipos financieros pequeños.",
  "sameAs": ["https://github.com/acme-ai", "https://x.com/acmeai", "https://www.linkedin.com/company/acme-ai"] }

Agrega un objeto WebSite con el mismo name y alternateName; Google lo usa para el nombre del sitio en los resultados. Enumera en sameAs solo los perfiles que controlas y que enlazan de vuelta al sitio.

10. Mantén el sufijo de la marca consistente

Un sufijo en todas partes: | Acme AI en los títulos, la misma cadena en og:site_name, el H1 de llms.txt, las biografías de redes sociales y la organización de GitHub. Mantén los títulos dentro de 60 caracteres (alrededor de 30 para chino, japonés y coreano), la palabra clave primero; agrega el sufijo solo cuando quepa.

11. Verifica lo que realmente dicen los asistentes

Mensualmente, y después de cambios grandes, haz de 5 a 10 consultas manualmente en ChatGPT (búsqueda activada), Perplexity, Claude, Gemini y Copilot: "¿Qué es Acme AI?", "precios de Acme AI", "mejor <categoría> para ", "alternativas a ", "Acme AI vs ". Una consulta a la vez en la interfaz normal; no automatices las UIs de chat. Registra fecha, asistente, consulta, si eres mencionado, qué URL se cita y cualquier hecho incorrecto en docs/seo/ai-answers.md. Corrige la página fuente detrás de cada hecho incorrecto, luego vuelve a verificar. Para el tráfico, segmenta los análisis por referente: chatgpt.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com.

Lista de verificación

  • La hoja de hechos existe; las páginas, llms.txt y JSON-LD se leen de ella
  • /llms.txt devuelve 200 como texto, se genera y está enlazado desde el pie de página
  • robots.txt permite los agentes de IA y repite las denegaciones; el CDN no los bloquea
  • Cada página clave comienza con una definición de una oración en el HTML sin procesar
  • Las tablas comparativas están fechadas y referenciadas; los desconocidos dicen "No publicado"
  • Las respuestas de FAQ se sostienen por sí mismas y cubren precio, "es gratuito" y confusión de nombre
  • /pricing es público; llms.txt y offers coinciden
  • Organization y WebSite llevan name, alternateName, description y sameAs
  • Un sufijo de marca en todas partes; títulos dentro de 60 caracteres
  • Las respuestas de los asistentes se registran; los hechos incorrectos se rastrean hasta una página y se corrigen

Errores que hemos encontrado

  • Sin precios públicos. /pricing devolvía 404, llms.txt y SoftwareApplication no tenían ofertas, y nuestra propia tabla comparativa tenía que decir "No publicado" para nosotros. Una página /pricing con tres planes en texto, reflejada en llms.txt y offers, lo solucionó; los niveles de pago están marcados como "próximamente".
  • Desviación de estado. Después de que se abrieran los registros, alrededor de 300 archivos en 9 idiomas, incluido llms.txt, todavía decían "acceso temprano". El estado ahora proviene de una constante.
  • Un archivo al que nadie enlaza. Una auditoría no encontró ninguna página que enlazara a llms.txt, ni llms-full.txt, ni lastmod en el mapa del sitio.
  • Anulación de grupo en robots.txt. Dar a los rastreadores de IA su propio grupo sin repetir las denegaciones habría abierto las rutas de API y de inicio de sesión para ellos.
  • Colisión de marca. Buscar el nombre simple de nuestra marca devolvía primero una aplicación de programación de tripulaciones del mismo nombre. Cambiamos a " AI" en títulos, alternateName y sameAs.
  • Títulos truncados e inconsistentes. 49 títulos en inglés tenían de 57 a 88 caracteres con sufijos mixtos. Los redujimos a 60 o menos, palabra clave primero, sufijo solo cuando quepa.
  • Obtenciones poco fiables de páginas de la competencia. La obtención de la página de precios de un competidor por parte de un subagente de investigación devolvió algo que parecía manipulado; lo confirmamos en un navegador real antes de publicar. La página de precios de otro vendedor devolvió 403 al obtenedor, así que tomamos los precios de su documentación y dijimos de dónde venían.
  • Escribir "gratuito" demasiado pronto. Hasta que se publicaron los precios, escribíamos "no publicado", no "gratuito". Un asistente repite lo que sea que diga la página.

Habilidades relacionadas

  • seo-page: la plantilla de página donde viven la definición, la tabla y las FAQ.
  • competitor-pages: páginas de comparación y alternativas, que los asistentes citan mucho.
  • programmatic-pages: generar secciones de llms.txt y datos estructurados a escala.
  • multilingual-seo: definiciones, títulos y longitud de sufijo localizados por idioma.
  • keyword-research, trend-keywords: las preguntas a responder y las consultas a probar.
  • index-push: lograr que las páginas sean rastreadas; el índice de Bing alimenta a Copilot.
  • seo-daily-report: visitas referidas por IA como una línea propia en el informe.

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.

Skills relacionados