Extraiga enlaces de Markdown: texto y URL
Obtenga todos los enlaces de un texto Markdown como una lista limpia de texto y dirección: la muestra da 4 enlaces, de setup guide a Home, y los enlaces por referencia como [support][] se resuelven a su dirección real. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Convierta código Markdown en una lista clara de enlaces sin renderizar el documento ni desarrollar un analizador propio. El extractor detecta enlaces en línea y por referencia, resuelve sus definiciones y devuelve el texto visible junto con la URL de destino en el orden original. Omite imágenes y ejemplos que parezcan enlaces dentro de código, mientras que los documentos sin enlaces generan una lista vacía. El proceso es determinista, no necesita acceso a la red y funciona con archivos README, documentación, registros de cambios, plantillas de incidencias y documentos Markdown generados.
Obtenga el texto y el destino de cada enlace en una solicitud
Pegue todo el código Markdown en el campo <code>text</code>. El resultado contiene un array <code>links</code> en el que cada registro incluye <code>text</code>, con la etiqueta visible, y <code>url</code>, con el destino. Los enlaces en línea como <code>[Guía](https://example.com/setup)</code> se devuelven directamente.
El orden de lectura se conserva para facilitar auditorías, migraciones e informes sin ordenar de nuevo. También se mantienen las repeticiones, pues cada aparición puede ser relevante al revisar la navegación o medir la promoción de un destino. Si no hay enlaces compatibles, la solicitud finaliza correctamente con un array vacío; un documento válido sin enlaces no se trata como error.
El Markdown vacío se procesa del mismo modo.
Resuelva referencias sin confundir ejemplos con enlaces
Las referencias Markdown pueden usar etiquetas explícitas, contraídas o abreviadas. El extractor admite <code>[etiqueta][id]</code>, <code>[etiqueta][]</code> y <code>[etiqueta]</code> cuando existe una definición correspondiente. Las etiquetas se resuelven sin distinguir mayúsculas y minúsculas, y los espacios consecutivos se normalizan.
Se aceptan destinos entre ángulos y títulos opcionales en las definiciones, pero los títulos no se devuelven porque la capacidad solo entrega texto y URL. La sintaxis de imagen que empieza por exclamación queda fuera: una imagen representa un recurso, no un enlace de navegación. También se ignoran bloques de código delimitados y fragmentos de código en línea, evitando que los ejemplos técnicos contaminen el inventario real.
Las líneas de definición no generan registros por sí mismas; solo se emiten usos efectivos. Los marcadores de formato se eliminan de la etiqueta y la puntuación escapada se restaura.
Integre enlaces estructurados en flujos de documentación
Un inventario de enlaces resulta útil antes de trasladar documentación, cambiar un dominio o comprobar referencias a servicios retirados. Puede enviar cada URL a una etapa de validación autorizada, agrupar destinos por host o comparar revisiones para conocer altas y bajas. Los equipos de contenido pueden localizar etiquetas imprecisas, mientras que quienes desarrollan pueden detectar referencias repetidas en archivos README generados.
El máximo es de un millón de caracteres para acotar el tiempo de proceso.
Qué puede hacer con ella
Audite destinos de documentación
Cree un inventario ordenado de las URL de navegación antes de comprobar disponibilidad, propiedad o preparación para una migración.
Revise las etiquetas de los enlaces
Examine el texto visible para detectar etiquetas ambiguas y mejorar la accesibilidad y claridad de la documentación.
Compare revisiones Markdown
Extraiga enlaces de dos versiones e identifique destinos añadidos, sustituidos o eliminados.
Preguntas frecuentes
¿Qué formatos de enlace se admiten?
Se admiten enlaces en línea y referencias completas, contraídas o abreviadas cuando están presentes sus definiciones.
¿Se incluyen las imágenes Markdown?
No. La sintaxis de imagen se excluye porque se extraen enlaces de navegación, no fuentes de recursos incrustados.
¿Qué ocurre si no hay enlaces?
La solicitud se completa correctamente y devuelve un array <code>links</code> vacío.
¿Se cuentan los enlaces dentro de ejemplos de código?
No. Los bloques de código y el código en línea se omiten, de modo que los ejemplos de Markdown de un tutorial no ensucian su inventario real de enlaces. Las líneas que solo definen una referencia tampoco aparecen; solo los usos reales.
¿Comprueba si los enlaces siguen funcionando?
No. No abre las direcciones, no comprueba su estado, no sigue redirecciones ni cambia su texto. Solo lee el texto que usted pega, así que la misma entrada siempre da la misma lista ordenada.
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/dev2/markdown-link-extract \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Read the [guide](https://example.com/guide) and [API docs][api].\n\n[api]: https://example.com/api"}'const res = await fetch("https://api.kit.forhosting.com/dev2/markdown-link-extract", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Read the [guide](https://example.com/guide) and [API docs][api].\n\n[api]: https://example.com/api"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/markdown-link-extract",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Read the [guide](https://example.com/guide) and [API docs][api].\n\n[api]: https://example.com/api"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/markdown-link-extract", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Read the [guide](https://example.com/guide) and [API docs][api].\\n\\n[api]: https://example.com/api"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Read the [guide](https://example.com/guide) and [API docs][api].\n\n[api]: https://example.com/api"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/markdown-link-extract", 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
{
"text": "Read the [guide](https://example.com/guide) and [API docs][api].\n\n[api]: https://example.com/api"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.markdown_link_extract",
"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.
Límites
max_chars | 1000000 |
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
Obtenga el texto y el destino de cada enlace en una solicitud
Los enlaces por referencia como <code>[API][docs]</code> se asocian con definiciones como <code>[docs]: https://example.com/api</code>, aunque estas aparezcan más adelante.
Integre enlaces estructurados en flujos de documentación
La capacidad no visita las URL, no comprueba estados HTTP, no amplía redirecciones ni modifica el Markdown. Estos límites hacen que la ejecución sea rápida, privada y predecible: el texto se analiza localmente y la misma entrada siempre produce la misma salida ordenada. Si falta <code>text</code> o no es una cadena, se devuelve <code>invalid_input</code>, diferenciando una solicitud incorrecta de un documento válido sin enlaces. El uso de la API cuesta $0.002 por solicitud.
Preguntas técnicas
¿Comprueba la herramienta si funciona una URL?
No. Extrae destinos sin realizar solicitudes de red, seguir redirecciones ni comprobar el estado HTTP.
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. El ejecutor del navegador puede aplicar localmente la misma extracción determinista.