Genere Markdown para insignias README con texto alternativo
Cree una insignia README lista para pegar a partir de una etiqueta, un mensaje y un color, sin tener que recordar la sintaxis de rutas de Shields.
Ejecutar — gratis
El generador devuelve por separado el Markdown completo, la URL de la imagen y un texto alternativo legible. Procesa de forma segura espacios, guiones, guiones bajos, signos y corchetes con significado en Markdown, de modo que el resultado conserva una estructura válida incluso con nombres reales de tareas o canales de publicación. Use la herramienta del navegador para una insignia puntual o llame a la API determinista al generar documentación automáticamente.
Elija un texto breve que comunique el estado
Una insignia útil responde de inmediato a una pregunta pequeña y concreta. Coloque la categoría a la izquierda como etiqueta y su valor actual a la derecha como mensaje. Por ejemplo, una etiqueta como compilación junto a un mensaje como correcta se distingue mejor que una frase larga comprimida en una imagen. El texto alternativo generado une ambos valores mediante dos puntos, por lo que las personas que usan lectores de pantalla reciben la misma relación básica que se presenta visualmente. Procure que los dos valores conserven su significado sin depender del color, ya que este nunca debería ser el único medio de comunicar un estado esencial. El generador elimina los espacios exteriores, pero mantiene las palabras y mayúsculas elegidas. Rechaza etiquetas y mensajes vacíos para evitar imágenes confusas con una mitad en blanco. Si la insignia representa automatización, mantenga un vocabulario estable entre versiones para que los cambios sean legibles. El campo alt_text permite además revisar o reutilizar la descripción accesible sin separar el Markdown final.
Comprenda cómo se forma la URL de Shields
Las insignias estáticas de Shields codifican la etiqueta, el mensaje y el color dentro de la ruta de una imagen. Esa ruta aplica reglas especiales a sus separadores: los espacios se convierten en guiones bajos, los guiones bajos literales se duplican y los guiones literales también se duplican para no confundirlos con las divisiones entre las partes. Los demás signos se codifican porcentualmente para obtener una URL válida. Esta capacidad aplica dichas transformaciones de manera determinista y devuelve la URL resultante junto al Markdown. Puede indicar un color hexadecimal con almohadilla inicial; esta se elimina antes de incorporar el valor a la ruta. También puede usar directamente nombres de color de Shields como brightgreen. El servicio no se conecta con Shields ni comprueba cómo se representa un nombre de color concreto. Solo genera la referencia convencional a la imagen, por lo que la ejecución es rápida, privada y adecuada para compilaciones de documentación sin conexión. Un resultado correcto confirma la sintaxis generada, no la descarga de la imagen remota.
Inserte y automatice el Markdown de forma segura
Copie el campo markdown en un README, una plantilla de solicitud de cambios, una página de paquete o cualquier documento Markdown que admita imágenes remotas. El resultado utiliza el formato conocido de imagen, con texto accesible entre corchetes y la URL de Shields entre paréntesis. Los corchetes y las barras inversas del texto visible se escapan para que una frase aportada por el usuario no cierre antes de tiempo la sección de texto alternativo. En un flujo automatizado, envíe los tres campos de entrada al representar la documentación y escriba el valor markdown devuelto en la ubicación prevista. Como el algoritmo no depende de la hora, del azar, del estado ni de la red, entradas idénticas siempre producen salidas idénticas; así, los archivos generados permanecen estables en el control de versiones. Conserve la posición y el orden de las insignias en su propia plantilla. Esta capacidad crea deliberadamente un solo elemento por solicitud: no edita repositorios, no consulta compilaciones ni decide qué estado corresponde. La automatización de origen aporta el dato verdadero y este generador se ocupa de codificarlo y presentarlo correctamente.
Qué puede hacer con ella
Añadir un marcador de estado de compilación
Cree Markdown uniforme para una plantilla README antes de que el sistema de integración continua proporcione el mensaje actual.
Documentar la compatibilidad de un paquete
Convierta una etiqueta de entorno y una versión compatible en una insignia compacta con el texto alternativo correspondiente.
Generar documentación de versiones
Produzca fragmentos deterministas dentro de una compilación documental sin programar las reglas de escape de las rutas de Shields.
Preguntas frecuentes
¿Cuánto cuesta una solicitud?
Cada solicitud de API cuesta $0.002. El mismo generador determinista también puede ejecutarse en el navegador.
¿Se comprueba que la imagen de Shields esté disponible?
No. Se generan la URL y el Markdown sin realizar ninguna solicitud de red ni descargar la imagen.
¿Puedo usar un color hexadecimal?
Sí. Indique un valor hexadecimal RGB con o sin almohadilla inicial; la ruta generada omitirá dicha almohadilla.
¿Por qué se duplican los guiones y guiones bajos en la URL?
Shields usa caracteres duplicados para diferenciar los literales de los separadores de ruta y de los espacios codificados.
¿Qué ocurre si la etiqueta o el mensaje están vacíos?
La solicitud falla con un error de entrada no válida, porque ambas partes son necesarias para una insignia útil y accesible.
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/dev/readme-badge-markdown \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"label":"build","message":"passing","color":"brightgreen"}'const res = await fetch("https://api.kit.forhosting.com/dev/readme-badge-markdown", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"label": "build",
"message": "passing",
"color": "brightgreen"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/readme-badge-markdown",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"label": "build",
"message": "passing",
"color": "brightgreen"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/readme-badge-markdown", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"label":"build","message":"passing","color":"brightgreen"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"label":"build","message":"passing","color":"brightgreen"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/readme-badge-markdown", 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
{
"label": "build",
"message": "passing",
"color": "brightgreen"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.readme_badge_markdown",
"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. |