Comprobar encabezados
Tanto los lectores de pantalla como los motores de búsqueda construyen el esquema de una página a partir de sus etiquetas de encabezado, y una secuencia rota, como un H3 que salta directo desde un H1, o tres H1 distintos peleando por el mismo lugar, confunde a ambos. La API de Estructura de Encabezados extrae las etiquetas H1 a H6 de una URL, las organiza en un esquema y señala exactamente dónde se rompe la jerarquía. Es una revisión acotada y rápida, hecha para lo que una auditoría completa suele dejar enterrado.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Una etiqueta pequeña con un trabajo enorme
Las etiquetas de encabezado cumplen doble función: son la jerarquía visual para quien lee la página y el esquema navegable para usuarios de lectores de pantalla y para los analizadores de los motores de búsqueda, por eso una estructura que se ve bien estilizada en pantalla puede estar rota por debajo. Un diseñador que elige un H4 por el tamaño de su tipografía en vez de por su lugar en el esquema comete un error común e invisible, y esta revisión existe específicamente para sacarlo a la luz.
Qué devuelve la revisión
POST /seo/headings obtiene la página y extrae cada etiqueta de encabezado en el orden del documento, luego entrega el esquema completo junto con marcas específicas: ausencia de H1, más de un H1, un nivel saltado en la secuencia como un H2 seguido directamente de un H4, y encabezados vacíos o que duplican contenido presente en otra parte de la página. Recibe tanto el esquema en bruto como la lista de problemas, así que ve la estructura y el diagnóstico en una sola respuesta.
De dónde viene la convención H1 a H6
Los niveles de encabezado se remontan a los primeros días del HTML, cuando se esperaba que los documentos anidaran secciones como lo haría una tabla de contenido, mucho antes de que existiera el CSS para hacer que cualquier etiqueta se viera como se quisiera. Esa intención original, una jerarquía lógica independiente del estilo visual, es exactamente en lo que todavía se apoyan las herramientas de accesibilidad y los buscadores, y por eso elegir el nivel por cómo se ve, y no por su lugar en el esquema, sigue causando problemas reales.
Una revisión enfocada, no una auditoría completa
Este endpoint hace una sola cosa en vez de mezclar los encabezados dentro de un escaneo más amplio, lo que lo hace lo bastante barato y rápido para correrlo en cada página de un pipeline sin esperar un reporte más pesado. La llamada es asíncrona: recibe un task_id de inmediato y el esquema con sus marcas llega por webhook firmado o por un enlace válido por 24 horas, igual que lo haría un linter.
Usarla como salvaguarda, no como corrección puntual
Córrala en cada página antes de publicar, o sobre una plantilla una sola vez, confiando en que cada página construida a partir de ella hereda un esquema limpio. Ningún contenido de página se conserva más allá de la ventana de retención, y nada de lo revisado aquí entrena ningún modelo.
Qué puede hacer con ella
Detectar un H1 faltante antes de publicar
Condicione el paso de publicación de su CMS a esta revisión, para que una página no pueda salir en vivo sin exactamente un H1 presente.
Resolver quejas de accesibilidad ligadas a la navegación
Corra la revisión en páginas que usuarios de lectores de pantalla reportaron como confusas de navegar, y ubique el nivel de encabezado saltado exacto que lo causa.
Auditar una plantilla usada en miles de páginas
Revise el resultado renderizado de una página representativa de la plantilla en vez de cada página por separado, ya que un defecto estructural ahí se repite en todas.
Revisar encabezados tras migrar de CMS o de tema
Vuelva a revisar las páginas clave después de cambiar de tema, porque el nuevo marcado a veces cambia sin aviso qué etiqueta se renderiza como qué nivel de encabezado.
Preguntas frecuentes
Qué se considera una estructura de encabezados rota?
Etiquetas H1 faltantes o duplicadas, un nivel saltado en la secuencia como pasar de H2 directo a H4, y encabezados vacíos son los problemas principales que marca esta revisión.
Un solo H1 por página es una regla estricta?
Es la convención fuerte que esperan tanto las herramientas de accesibilidad como los motores de búsqueda, y la revisión marca cualquier página con cero o más de un H1 para que decida cómo corregirlo.
Revisa la calidad del contenido del encabezado o solo la estructura?
Se enfoca en la corrección estructural y en encabezados vacíos o duplicados; un análisis más profundo de palabras clave o contenido corresponde a una auditoría distinta, no a esta revisión puntual.
Hay una forma gratuita de probarla primero?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
Cómo llegan los resultados?
POST /seo/headings devuelve un task_id de inmediato, y el esquema con sus marcas llega por webhook firmado o por un enlace firmado válido durante 24 horas.
Cuánto cuesta revisar un sitio grande?
Tiene un costo fijo de 0.002 dólares por petición, así que revisar mil páginas tiene un costo total pequeño y predecible.
Qué pasa si la página no carga?
La tarea se reintenta automáticamente hasta tres veces antes de devolver un error claro, y nunca se le cobra por una tarea fallida.
Esto puede reemplazar una auditoría de accesibilidad completa?
No, revisa a fondo una señal estructural específica; una revisión de accesibilidad completa cubre mucho más que la jerarquía de encabezados.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/seo/headings \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/seo/headings", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/headings",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/headings", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/headings", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"url": "https://ejemplo.com"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.headings",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |