Cuente enlaces internos y externos
Separe los enlaces de una página en internos y externos: de cinco enlaces, tres en su dominio y dos fuera dan un reparto de 0,6 a 0,4. Los relativos cuentan como suyos, un subdominio cuenta como externo y cada enlace muestra su veredicto. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Nombre de dominio
- https://example.com
- Nombre de dominio
- example.com
- Total de enlaces
- 5
- Enlaces internos
- 3
- Enlaces externos
- 2
Este contador de enlaces internos y externos clasifica cada enlace proporcionado según el nombre de host de su sitio y devuelve totales, proporciones y el resultado elemento por elemento. Admite listas ya extraídas de una página, incluidas referencias relativas como /about o #details y URL absolutas. Úselo para revisar la composición de enlaces, validar un proceso de extracción o convertir una lista sin procesar en métricas coherentes sin descargar la página ni rastrear el sitio.
Prepare el dominio del sitio y la lista de enlaces
Comience con el nombre de host que define su sitio y las URL de los enlaces recopilados en una página. La lista puede combinar URL absolutas, URL relativas al protocolo, rutas desde la raíz, referencias relativas a una ruta, enlaces formados solo por una consulta y enlaces de fragmento. Las referencias relativas se resuelven respecto de la URL proporcionada, por lo que /services, team, ?
Cada elemento debe ser una cadena no vacía que pueda interpretarse como referencia URL. La herramienta no descarga HTML ni descubre enlaces por sí sola; así, el cálculo es determinista y permite analizar listas obtenidas de un rastreador, una exportación del navegador, un CMS, pruebas o una hoja de cálculo. Incluya cada aparición si desea reflejar la frecuencia de enlaces de la página.
Si un destino aparece tres veces, se cuenta tres veces. Una lista vacía se rechaza para evitar una proporción cero a cero engañosa.
Entienda la clasificación y las proporciones
La comparación no distingue mayúsculas de minúsculas porque el análisis normaliza los nombres de host. Las rutas, consultas, fragmentos, credenciales y puertos no alteran esa clasificación. Un enlace con otro nombre de host es externo, incluido un subdominio como blog.example.com cuando el sitio configurado es example.com.
Por ejemplo, tres enlaces internos de cuatro generan una proporción interna de 0.75. Las proporciones se redondean a seis decimales para ofrecer una salida estable y, juntas, suman uno. El array links conserva el orden de entrada y muestra la clasificación de cada cadena original, lo que facilita investigar cualquier recuento inesperado.
Utilice el resultado en una revisión SEO
Conviene interpretar los recuentos como una señal de diagnóstico, no como un objetivo universal de posicionamiento. Los enlaces internos ayudan a visitantes y rastreadores a llegar a páginas relacionadas, entender la jerarquía y distribuir autoridad por el sitio. Los externos pueden respaldar afirmaciones y conducir a fuentes primarias útiles.
Una página con un equilibrio inusual merece revisión, pero el valor adecuado depende de su propósito: un glosario, una página de producto y un artículo de investigación enlazan de forma diferente. Compare plantillas semejantes, observe la evolución e inspeccione cada clasificación antes de concluir. En automatizaciones, ejecute el contador tras la extracción y guarde el resultado junto a la URL y la fecha del rastreo.
Podrá señalar páginas sin enlaces internos, detectar plantillas que añadan de pronto muchos destinos externos o comprobar que una migración mantuvo la navegación en el host previsto. Como no hay solicitudes de red ni datos cambiantes, una misma entrada siempre produce la misma salida.
Qué puede hacer con ella
Revise una página de destino
Mida el equilibrio entre enlaces internos y externos y compruebe cómo se clasificó cada URL extraída.
Valide la salida de un rastreador
Añada recuentos deterministas al proceso de extracción y detecte destinos inesperados fuera del dominio.
Compruebe una migración
Encuentre listas con enlaces que aún apuntan a un host antiguo tras cambiar dominios o entornos.
Preguntas frecuentes
¿Cuánto cuesta?
Puede ejecutarlo gratis en su navegador desde esta página.
¿Los enlaces relativos son internos?
Sí. Las referencias desde la raíz, relativas a rutas, formadas solo por consultas o por fragmentos se resuelven respecto del sitio y son internas.
¿Los subdominios se consideran internos?
No. La clasificación exige que el host coincida exactamente; blog.example.com es externo si el host configurado es example.com.
¿La herramienta descarga o rastrea mi página?
No. Solo clasifica las cadenas URL que usted proporciona y no realiza solicitudes de red.
¿Cómo se cuentan los enlaces duplicados?
Se cuenta cada elemento de la lista. Las URL repetidas permanecen repetidas porque representan apariciones distintas.
Herramientas relacionadas
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, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/seo/internal-link-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}'const res = await fetch("https://api.kit.forhosting.com/seo/internal-link-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/internal-link-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/internal-link-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"domain":"https://example.com","urls":["/about","https://example.com/pricing","https://docs.example.net/guide"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/internal-link-count", 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
{
"domain": "https://example.com",
"urls": [
"/about",
"https://example.com/pricing",
"https://docs.example.net/guide"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.internal_link_count",
"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. |
Notas técnicas
Prepare el dominio del sitio y la lista de enlaces
Puede introducir solo el dominio, como example.com, o una URL absoluta del sitio con HTTP o HTTPS. page=2 y #pricing son internas.
Entienda la clasificación y las proporciones
Un enlace es interno cuando se resuelve como una URL HTTP o HTTPS cuyo nombre de host coincide exactamente con el del sitio proporcionado. Los esquemas ajenos a la web, como mailto, tel y ftp, también se consideran externos porque no identifican una página HTTP o HTTPS del host configurado. El resultado incluye total_links, internal_links y external_links, seguidos de internal_ratio y external_ratio como valores entre cero y uno.
Utilice el resultado en una revisión SEO
El navegador es gratuito y la API cuesta $0.002 por solicitud.
Preguntas técnicas
¿Qué sucede si la lista está vacía?
La solicitud falla con un error invalid_input porque hacen falta al menos un enlace para obtener un recuento y una proporción útiles.