Extraia links de Markdown: texto e URLs
Receba todos os links de um texto Markdown como uma lista limpa de texto e endereço: a amostra dá 4 links, de setup guide a Home, e links por referência como [support][] são resolvidos para o endereço real. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Transforme a fonte Markdown em uma lista organizada de links sem renderizar o documento nem criar um analisador próprio. O extrator encontra links inline e por referência, resolve as definições e retorna o texto visível ao lado da URL de destino na ordem original. Imagens e exemplos semelhantes a links dentro de código são ignorados, enquanto documentos sem links retornam uma lista vazia. O processo é determinístico, não acessa a rede e funciona da mesma forma com README, páginas de documentação, changelogs, modelos de issues e arquivos Markdown gerados.
Extraia textos e destinos em uma única solicitação
Cole toda a fonte Markdown no campo <code>text</code>. O resultado contém o array <code>links</code>; cada registro apresenta <code>text</code> para o rótulo visível e <code>url</code> para o destino. Links inline como <code>[Guia](https://example.com/setup)</code> são retornados diretamente.
Os links permanecem na ordem de leitura, permitindo auditorias, migrações e relatórios sem uma nova ordenação. Ocorrências repetidas são preservadas, pois cada uso pode importar ao revisar a navegação ou medir a divulgação de um destino. Quando o Markdown não contém links compatíveis, a solicitação é concluída com um array vazio, em vez de considerar um documento normal como erro.
Uma entrada Markdown vazia recebe o mesmo tratamento.
Resolva referências sem confundir exemplos com links
As referências Markdown podem utilizar rótulos explícitos, recolhidos ou abreviados. O extrator aceita <code>[rótulo][id]</code>, <code>[rótulo][]</code> e <code>[rótulo]</code> quando existe uma definição correspondente. A resolução não diferencia maiúsculas de minúsculas e normaliza sequências de espaços.
Destinos entre sinais angulares e títulos opcionais são aceitos, mas os títulos não são retornados porque a capacidade entrega somente texto e URL. A sintaxe de imagem iniciada por exclamação é excluída: uma imagem indica a origem de um recurso, não um link de navegação. Blocos de código cercados e trechos de código inline também são ignorados, evitando que exemplos técnicos poluam o inventário real.
Linhas de definição não geram itens sozinhas; somente usos efetivos são emitidos. Marcadores de formatação são retirados do texto visível, e a pontuação Markdown escapada é restaurada para uso posterior.
Use links estruturados nos fluxos de documentação
Um inventário de links ajuda antes de migrar documentação, alterar um domínio ou verificar referências a serviços desativados. Você pode enviar cada URL a uma etapa autorizada de validação, agrupar destinos por host ou comparar revisões para descobrir links adicionados e removidos. Equipes de conteúdo podem localizar rótulos vagos, e equipes de desenvolvimento podem identificar referências repetidas em arquivos README gerados.
O processamento é limitado a um milhão de caracteres.
Casos de uso
Audite destinos da documentação
Crie um inventário ordenado de URLs de navegação antes de verificar disponibilidade, propriedade ou preparo para migração.
Revise os rótulos dos links
Analise o texto visível para encontrar rótulos ambíguos e melhorar a acessibilidade e a clareza da documentação.
Compare revisões Markdown
Extraia links de duas versões e identifique destinos incluídos, substituídos ou removidos.
Perguntas frequentes
Quais formatos de link são aceitos?
São aceitos links inline e referências completas, recolhidas ou abreviadas quando suas definições estão presentes.
As imagens Markdown são incluídas?
Não. A sintaxe de imagem é excluída porque a capacidade extrai links de navegação, não fontes de recursos incorporados.
O que acontece quando não há links?
A solicitação é concluída com sucesso e retorna um array <code>links</code> vazio.
Links dentro de exemplos de código são contados?
Não. Blocos de código e código em linha são ignorados, então os exemplos de Markdown de um tutorial não poluem o seu inventário real de links. Linhas que só definem uma referência também não aparecem; apenas os usos reais.
A ferramenta verifica se os links ainda funcionam?
Não. Ela não abre os endereços, não testa o status, não segue redirecionamentos nem altera o seu texto. Só lê o texto que você cola, então a mesma entrada sempre gera a mesma lista ordenada.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"text": "Read the [guide](https://example.com/guide) and [API docs][api].\n\n[api]: https://example.com/api"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.markdown_link_extract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_chars | 1000000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Extraia textos e destinos em uma única solicitação
Referências como <code>[API][docs]</code> são associadas a definições como <code>[docs]: https://example.com/api</code>, mesmo quando a definição aparece depois no documento.
Use links estruturados nos fluxos de documentação
A capacidade não acessa URLs, não testa status HTTP, não expande redirecionamentos nem altera o Markdown. Esses limites tornam a execução rápida, privada e previsível: o texto é analisado localmente, e a mesma entrada sempre produz a mesma saída ordenada. A ausência de <code>text</code> ou um valor que não seja string retorna <code>invalid_input</code>, distinguindo uma solicitação malformada de um documento válido sem links. O uso da API custa US$ 0,002 por solicitação.
Perguntas técnicas
A ferramenta verifica se uma URL funciona?
Não. Ela extrai destinos sem acessar a rede, seguir redirecionamentos ou testar o status HTTP.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. O executor do navegador pode aplicar localmente a mesma extração determinística.