SEO Landing

Una habilidad de agente para crear páginas de aterrizaje SEO técnicamente optimizadas y de alto rendimiento. Convierte un agente de codificación de IA en un especialista técnico en SEO.

Documentación

SEO Landing

Dale a tu agente de codificación con IA las capacidades de un ingeniero senior de SEO técnico.

Una habilidad de agente para construir páginas de aterrizaje SEO técnicamente optimizadas y de alto rendimiento. Convierte un agente de codificación con IA en un especialista en SEO técnico.

Construye y mejora páginas de aterrizaje con:

  • 🚀 Objetivo de 100/100 en Google PageSpeed
  • ⚡ Optimización de Core Web Vitals
  • 🔍 SEO técnico
  • 🧩 Datos estructurados completos de Schema.org
  • 🖼️ Optimización de imágenes AVIF
  • 🎨 CSS crítico
  • 🧹 Cero solicitudes de terceros en la primera carga
  • 📱 Rendimiento móvil primero
  • 🤖 HTML semántico

🇷🇺 Описание скила на русском языке

Funciona con agentes de codificación con IA

Diseñado para flujos de trabajo de codificación agénticos y compatible con entornos de estilo Agent Skills.

¿Qué hace?

La habilidad guía a un agente de codificación con IA a través del flujo de trabajo completo de páginas de aterrizaje:

  1. Analizar la página existente
  2. Corregir problemas de SEO técnico
  3. Optimizar la estructura HTML
  4. Mejorar Core Web Vitals
  5. Optimizar imágenes y fuentes
  6. Añadir datos estructurados
  7. Eliminar dependencias innecesarias
  8. Validar la implementación final

¿Por qué?

La IA puede generar una página de aterrizaje hermosa en segundos. El problema es que las páginas generadas a menudo contienen:

  • JavaScript innecesario
  • imágenes sobredimensionadas
  • estructura semántica deficiente
  • datos estructurados faltantes
  • metadatos débiles
  • cuellos de botella de rendimiento
  • errores de SEO técnico

SEO Landing Skill le da al agente un flujo de trabajo de SEO técnico repetible en lugar de depender de indicaciones genéricas.

Una habilidad de agente que construye y actualiza páginas de aterrizaje hacia 100/100 en PageSpeed de laboratorio y rendimiento compatible con Core Web Vitals, y logra el SEO técnico correcto. HTML estático, CSS crítico, imágenes AVIF, marcado completo de schema.org, cero solicitudes de terceros en la primera carga (los widgets diferidos, cuando se usan, están sujetos a consentimiento y documentados en el manifiesto de dependencias). Estos son objetivos de optimización, no resultados garantizados — los resultados dependen del contenido, alojamiento, dispositivos y tráfico real; el estado de Core Web Vitals en sí lo determina Google a partir de datos de campo (RUM), no de herramientas de laboratorio.

BEFORE
Landing page
↓
LCP: 4.2s
Performance: 61
Missing schema
Large PNG
Render-blocking CSS

        ↓ SEO LANDING SKILL ↓

AFTER
Landing page
↓
LCP: 1.1s
Performance: 100
Schema.org ✓
AVIF ✓
Critical CSS ✓
Semantic HTML ✓

Formato — Agent Skills (estándar abierto desarrollado originalmente por Anthropic): funciona en VS Code Copilot, Claude Code, OpenAI Codex, Google Antigravity, Cursor, Gemini CLI, OpenClaw, Hermes y otros agentes compatibles.

Qué incluye

seo-landing/
├── SKILL.md              # Main workflow: mode routing → brief → generation → stop point → validation → report
├── references/
│   ├── tech-spec.md      # Technical spec (13 requirement sections + executable validation contract)
│   ├── server-config.md  # Server config: caching, Brotli/gzip, security headers (Nginx/Apache)
│   ├── video-facade.md   # Reference implementation of the "facade" pattern for YouTube
│   └── map-facade.md     # Reference implementation of the "facade" pattern for map embeds
├── benchmark/            # Lab benchmark disclosure: fixture, raw Lighthouse reports, methodology
└── tests/
    └── fixtures/broken-landing/  # Negative fixture: every validator gate must fail on it

Requisitos clave aplicados por la habilidad

  • Rendimiento: LCP < 2.5s, INP < 100ms, CLS < 0.1; CSS crítico en línea, el resto cargado de forma asíncrona; la imagen LCP se carga con prioridad con fetchpriority="high" (una precarga responsiva imagesrcset/imagesizes solo cuando la medición muestra un beneficio)
  • Imágenes: AVIF → WebP → JPEG mediante <picture>, srcset/sizes, width/height, loading="lazy" solo para imágenes debajo del pliegue (nunca en la imagen LCP), puntos de interrupción 320–1920
  • SEO: title/description/canonical/robots, Open Graph, Twitter Card, JSON-LD (WebSite, Organization, BreadcrumbList, FAQPage, VideoObject — emitidos solo cuando están respaldados por hechos y reportados según el modo de video elegido, nunca como una función de búsqueda garantizada)
  • Accesibilidad: WCAG 2.1 AA, contraste ≥ 4.5:1, navegación con teclado, prefers-reduced-motion
  • Seguridad: X-Content-Type-Options, X-Frame-Options, Permissions-Policy, Referrer-Policy, CSP por página, HSTS escalonado, aplicación de HTTPS, rel="noopener noreferrer"
  • Fuentes: solo fuentes del sistema — sin fuentes externas, sin Google Fonts
  • Presupuesto de JS ≤ 15 KB para la primera carga, un archivo con defer; los widgets de terceros diferidos (cuando se usan) están sujetos a consentimiento, excluidos del presupuesto y divulgados en el manifiesto de dependencias
  • Prohibido: bibliotecas externas de JS/CSS, imágenes SVG, scripts síncronos, iframes en la primera carga
  • Video y mapas: patrón "fachada" por defecto — la portada es una imagen responsiva local (con carga prioritaria cuando es el LCP/sobre el pliegue, diferida debajo del pliegue), el iframe se carga solo al hacer clic. El video solo con clic sacrifica el descubrimiento de video de Google por privacidad/rendimiento previo a la activación; existe un modo opt-in detectable por SEO (<video> autoalojado o una inserción directa documentada) cuando la búsqueda de video importa (especificación técnica §9). Los mapas permanecen solo como fachada.
  • Bloques comunes sin JS: FAQ mediante <details>, slider mediante scroll-snap, modal mediante <dialog>
  • Punto de parada: antes de la validación y el informe final, la habilidad siempre pide al usuario confirmar la versión HTML

Resultado del mundo real (mediciones de laboratorio — no Core Web Vitals de campo)

Un punto de referencia de laboratorio reproducible: Lighthouse CLI 13.4.1, emulación móvil, limitación simulada. Original — una SPA Angular (102 solicitudes, 1 ejecución); la misma página reconstruida como HTML estático con esta habilidad (17–18 solicitudes, mediana de 5 ejecuciones). Divulgación completa — fixture, banderas exactas, informes JSON sin procesar, marcas de tiempo y método de agregación — está en benchmark/README.md.

MétricaOriginalReconstruidaGanancia
Rendimiento75100+25
Accesibilidad75100+25
Buenas prácticas73100+27
LCP3.3 s1.6 s−52%
Tiempo total de bloqueo490 ms13 ms−97%
TTI9.4 s1.6 s−83%
Datos transferidos769 KiB110 KiB−86%
Solicitudes10217−83%

Estos son números de laboratorio para un par antes/después. No son Core Web Vitals de campo (Google determina el estado de CWV a partir de datos de campo CrUX/RUM en el percentil 75, y Lighthouse no puede medir INP sin interacción real), y no son una garantía de que otra página, host, dispositivo o audiencia alcanzará los mismos resultados — los objetivos de la habilidad son metas de optimización, no resultados prometidos.

Instalación

La habilidad está alojada en github.com/aleksandr-alhoff/seo-landing. Clona el repositorio — la raíz del repositorio es la carpeta de la habilidad en sí — luego ejecuta los comandos a continuación desde el directorio que contiene seo-landing/:

git clone https://github.com/aleksandr-alhoff/seo-landing.git

Global (disponible en todos los proyectos)

Cada receta a continuación es autocontenida: primero crea su directorio de destino, luego copia la habilidad en él. Cada una debe terminar con estado 0 y dejar el diseño <skills-dir>/seo-landing/SKILL.md en su lugar.

Nota: cp -R de un clon de git también copia el directorio .git del clon en la instalación — inofensivo, pero innecesario. Para mantener instalaciones ligeras, reemplaza cp -R seo-landing <dir>/ con rsync -a --exclude=.git seo-landing <dir>/seo-landing/ (la misma sincronización utilizada para las actualizaciones a continuación).

# VS Code Copilot
mkdir -p ~/.copilot/skills
cp -R seo-landing ~/.copilot/skills/

# Claude Code
mkdir -p ~/.claude/skills
cp -R seo-landing ~/.claude/skills/

# OpenAI Codex CLI / ChatGPT desktop
mkdir -p ~/.agents/skills
cp -R seo-landing ~/.agents/skills/

# Cursor
mkdir -p ~/.cursor/skills
cp -R seo-landing ~/.cursor/skills/

# Gemini CLI
mkdir -p ~/.gemini/skills
cp -R seo-landing ~/.gemini/skills/

# Google Antigravity
mkdir -p ~/.gemini/config/skills
cp -R seo-landing ~/.gemini/config/skills/

# OpenCode
mkdir -p ~/.config/opencode/skills
cp -R seo-landing ~/.config/opencode/skills/

# OpenClaw (via CLI — installs into the shared ~/.openclaw/skills)
openclaw skills install git:aleksandr-alhoff/seo-landing --global
# or from a local clone: openclaw skills install ./seo-landing --global
# or manually:
mkdir -p ~/.openclaw/skills
cp -R seo-landing ~/.openclaw/skills/

# Hermes
mkdir -p ~/.hermes/skills
cp -R seo-landing ~/.hermes/skills/

OpenClaw también recoge habilidades de ~/.agents/skills (la ruta de Codex anterior), y Hermes también puede escanearlo si agregas ~/.agents/skills a skills.external_dirs en ~/.hermes/config.yaml.

Gemini CLI también puede instalar directamente desde un repositorio Git:

gemini skills install https://github.com/aleksandr-alhoff/seo-landing.git

Por proyecto (solo espacio de trabajo)

# Shared .agents/skills — picked up by VS Code Copilot, Codex, Cursor, Antigravity, Gemini CLI, OpenCode, OpenClaw, Hermes
mkdir -p .agents/skills
cp -R seo-landing .agents/skills/

# Claude Code
mkdir -p .claude/skills
cp -R seo-landing .claude/skills/

# VS Code Copilot (GitHub-style location)
mkdir -p .github/skills
cp -R seo-landing .github/skills/

# OpenClaw (workspace skills — highest precedence)
# via CLI: openclaw skills install ./seo-landing
mkdir -p skills
cp -R seo-landing skills/

# Hermes (project-local; then trust the repo once: hermes skills trust)
mkdir -p .hermes/skills
cp -R seo-landing .hermes/skills/

Actualizar, verificar y desinstalar copias instaladas

Dos hechos impulsan todo lo siguiente:

  1. git pull solo cambia el clon. Una copia instalada hecha con cp -R es independiente — extraer el clon fuente NO actualiza ninguna instalación.
  2. cp -R copia, no sincroniza. GNU cp no tiene comportamiento de sincronización/eliminación de destino: un archivo eliminado aguas arriba permanece en la copia instalada para siempre, produciendo una versión mixta de instrucciones antiguas y nuevas.

Entonces, una actualización es una sincronización explícita, acotada e idempotente hacia el destino de habilidad resuelto — nunca una recopia ciega.

Destinos (uno por cliente y alcance)

Cliente / alcanceDestino de habilidad instalada ($DEST)
VS Code Copilot — global~/.copilot/skills/seo-landing
Claude Code — global~/.claude/skills/seo-landing
OpenAI Codex CLI / ChatGPT desktop — global~/.agents/skills/seo-landing
Cursor — global~/.cursor/skills/seo-landing
Gemini CLI — global~/.gemini/skills/seo-landing
Google Antigravity — global~/.gemini/config/skills/seo-landing
OpenCode — global~/.config/opencode/skills/seo-landing
OpenClaw — global~/.openclaw/skills/seo-landing
Hermes — global~/.hermes/skills/seo-landing
Compartido por proyecto (Copilot, Codex, Cursor, Antigravity, Gemini CLI, OpenCode, OpenClaw, Hermes).agents/skills/seo-landing
Claude Code — por proyecto.claude/skills/seo-landing
VS Code Copilot — por proyecto (estilo GitHub).github/skills/seo-landing
OpenClaw — espacio de trabajo (mayor precedencia)skills/seo-landing
Hermes — por proyecto.hermes/skills/seo-landing

Actualización (sincronización idempotente, elimina archivos eliminados aguas arriba)

Ejecuta desde el directorio que contiene el clon actualizado seo-landing/, con $DEST configurado al destino de la tabla anterior:

DEST=~/.copilot/skills/seo-landing   # ← substitute the right destination

# 1. Recovery first: back up the current installation (the sync is destructive).
cp -R "$DEST" "$DEST.backup-$(date +%Y%m%d)"

# 2. Bounded idempotent sync: copy new/changed files AND delete files inside
#    $DEST that no longer exist upstream. --delete only ever touches $DEST.
rsync -a --delete --exclude=.git seo-landing/ "$DEST/"

# 3. Verify: zero differences (exit status 0) and the installed SKILL.md
#    matches the source revision byte-for-byte.
diff -qr -x .git seo-landing "$DEST" && cmp "$DEST/SKILL.md" seo-landing/SKILL.md

Notas:

  • rsync -a --delete está disponible de serie en macOS (openrsync) y en sistemas Linux típicos; --exclude=.git mantiene el historial del clon fuera de la instalación.
  • La copia de seguridad en el paso 1 es la ruta de recuperación: si la nueva versión se comporta mal, restáurala con rm -rf "$DEST" && cp -R "$DEST.backup-<date>" "$DEST". (openrsync de macOS no admite --backup, por lo que la copia explícita es el mecanismo verificado).
  • La sincronización es segura de re-ejecutar en cualquier momento — ejecutarla dos veces seguidas no cambia nada la segunda vez.
  • Ruta de actualización probada: una instalación que contiene un archivo que la nueva revisión eliminó pierde ese archivo después de la sincronización, y el SKILL.md instalado se vuelve byte-idéntico a la revisión fuente.

Verificar una instalación existente en cualquier momento

diff -qr -x .git seo-landing "$DEST"

El estado de salida 0 (sin salida) significa que la instalación coincide exactamente con el clon. Cualquier diferencia impresa es un archivo obsoleto, modificado o extra — vuelve a ejecutar la sincronización de actualización para resolverlo. Para verificar qué versión de especificación está instalada, lee la línea Version en la parte superior de $DEST/references/tech-spec.md (la única fuente de verdad para versiones).

Recargar / reiniciar después de una actualización

Los agentes leen las habilidades cuando comienza una sesión. Después de actualizar, inicia una nueva sesión de chat (o reinicia el CLI del agente) antes de confiar en la nueva versión. Los clientes que restringen las habilidades detrás de confianza/aprobación (por ejemplo, Hermes: hermes skills trust) pueden requerir volver a confiar en la copia actualizada.

Desinstalar

rm -rf "$DEST"   # the destination from the table above

Si la copia se instaló a través de un CLI de cliente (openclaw skills install, gemini skills install), prefiere el comando de desinstalación propio de ese cliente cuando lo proporcione; de lo contrario, eliminar el directorio de destino es suficiente. También elimina cualquier copia de seguridad ($DEST.backup-*) que ya no necesites.

Instalaciones con enlaces simbólicos — opcional/experimental

Enlazar simbólicamente el clon en un directorio de habilidades (para que git pull lo actualice en su lugar) es posible en principio, pero el soporte oficial de enlaces simbólicos, el manejo de confianza y el comportamiento de recarga difieren por cliente y NO están verificados aquí — trátalo como experimental. La sincronización rsync anterior es la ruta de actualización compatible e independiente del cliente.

Una vez instalada, la habilidad se recoge automáticamente por su descripción — solo pide a tu agente que "construya una página de aterrizaje a partir de un brief con enfoque en SEO y PageSpeed".

Uso

  1. Dale al agente un brief: dominio, idioma (etiqueta BCP-47, dirección base para idiomas RTL y configuración regional de Open Graph — tres entradas separadas), tema y palabras clave, tipo de negocio, CTA y contactos.
  2. La habilidad crea una carpeta de proyecto separada (<workspace>/<project-slug>/) con index.html y cada recurso local que referencia (todas las variantes de imagen, favicon), más — condicionalmente — styles.css (solo CSS diferido), script.js (cuando se usa JS), robots.txt, sitemap.xml, ASSETS.md y SERVER-SETUP.md. Las imágenes fuente faltantes se solicitan al usuario, nunca se inventan.
  3. En el punto de parada, confirma la versión HTML — la habilidad entonces ejecuta la validación (existencia de recursos/enlaces locales, W3C, JSON-LD, Lighthouse como evidencia automatizada, más verificaciones de accesibilidad manuales requeridas) y produce un informe: LCP, puntuaciones de PageSpeed y los tipos de schema.org utilizados.

Sobre el autor

Aleksandr Alhov — más de 14 años de experiencia en SEO, marketing de contenido y GEO/AEO. Dirige una boutique de SEO para equipos de producto que trabajan en los mercados EN, LATAM, MENA y CIS: construcción de departamentos de SEO internos llave en mano, lanzamiento de medios corporativos rentables, descubrimiento de hipótesis de crecimiento en el canal de SEO y consultoría práctica de SEO.

Cofundador de:

Hecho para el canal t.me/sdelay_tam — un canal acogedor de SEO para equipos de producto. Preguntas de SEO: t.me/alhov.

Licencia

MIT — libre de usar, modificar y distribuir, incluso con fines comerciales. Solo conserva el aviso de derechos de autor. Especificación: consulta references/tech-spec.md — la versión actual y el registro de cambios se declaran allí.