Sign in

Markdown es un formato de texto plano, compatible con casi todo, que se lee con facilidad en cualquier editor y se renderiza de forma uniforme en distintas herramientas. Wikilayer guarda el cuerpo de cada nodo en Markdown, lo analiza con goldmark + GFM y añade unas pocas extensiones propias para los enlaces entre nodos y los recuadros insertados.

CommonMark y GFM

Todo lo de CommonMark más GitHub-Flavored Markdown, con una excepción: una línea de encabezado en un cuerpo se rechaza, porque el sitio de un encabezado es un nodo y el motor de renderizado lo escribe a partir del título del nodo.

Así que los cuerpos pueden llevar:

  • Negrita (**texto**), cursiva (*texto*), tachado (~~texto~~).
  • Código en línea (`texto`) y bloques de código delimitados con una etiqueta de lenguaje opcional.
  • Listas sin orden (-, *, +), listas ordenadas (1.) y listas anidadas mediante sangría.
  • Bloques de cita (> ).
  • Tablas (sintaxis de barras verticales de GFM).
  • Listas de tareas (- [x], - [ ]).
  • Líneas horizontales (---).
  • Enlaces ([texto](url)) e imágenes (![alt](url)).

Extensiones de Wikilayer

Algunas formas se reescriben durante el renderizado.

Referencias cortas

Una referencia corta es un enlace escrito con el identificador de un nodo, que el motor de renderizado reescribe como la URL propia de la wiki. Sobrevive a un cambio de título o de slug porque el identificador no cambia.

Referencias cortas a páginas

[texto](page:N) se resuelve en la URL canónica de la página de destino: /{owner}/{wiki}/{id}-{slug}, o /{owner}/{wiki}/{lang}/{id}-{slug} para una página en un idioma que no es el principal. Los slugs pueden cambiar al renombrar; el identificador es estable.

Referencias cortas a bloques

[texto](block:N) se resuelve en el ancla #block-N: en la propia página del bloque es un enlace dentro de la página; desde cualquier otra página, es la URL de la página del bloque más esa ancla.

Recuadros

Recuadros visuales que se escriben como bloques de cita > [!KIND], con la sintaxis de recuadros de GitHub.

Tipos de recuadros

Los recuadros al estilo de GitHub se muestran como cajas con estilo propio. La primera línea del bloque de cita nombra el tipo:

> [!NOTE]
> Texto del cuerpo.

Tipos admitidos: NOTE, TIP, IMPORTANT, WARNING, CAUTION. Cada uno tiene su propio color e icono.

Mapas insertados

Un recuadro [!MAP] con lat, lng en la línea siguiente inserta un mapa interactivo. Una tercera línea, si existe, pasa a ser el pie.

> [!MAP]
> 44.7866, 20.4489
> Belgrado, el centro de la ciudad.

Imágenes insertadas

La imagen se guarda en el servidor y se inserta mediante su ruta /s/. Hay dos herramientas de MCP para guardarla:

  • upload_image recibe una dirección pública http o https, o un archivo adjunto en la conversación. El servidor descarga la imagen, por lo que sus bytes no tienen que pasar por el contexto del agente. Es adecuado para un agente en un chat del navegador que no dispone de shell.
  • request_upload emite una dirección de un solo uso a la que un agente con shell envía un archivo local: curl --data-binary @<file> -H 'Content-Type: <mime>' '<upload_url>'.

En ambos casos, la imagen se convierte a JPEG, con un lado mayor de 1600 px como máximo, y se guarda en la wiki. upload_image devuelve su ruta; con request_upload, la devuelve la petición POST. La ruta se inserta directamente en el cuerpo, exactamente como se recibió: ![texto alternativo](/s/images/…).

Junto al texto, con un pie de foto

Una imagen sola en un párrafo ocupa todo el ancho del texto. Si lleva un título, aparece a la derecha del texto, como una miniatura en una enciclopedia: el título se convierte en su pie de foto, el texto fluye por la izquierda y un clic abre la imagen completa.

![Una lámpara de aceite y un cuenco de piedra junto a una puerta abierta](/s/images/… "La casa al anochecer")

El texto alternativo describe la imagen para quien no puede verla; el pie de foto indica qué se debe extraer de ella. Una imagen vertical, o una que ilustra en vez de explicar, queda mejor junto al texto. Una captura de pantalla o un diagrama cuyos detalles importan conserva el ancho completo.

En una pantalla del ancho de un teléfono, la imagen ocupa todo el ancho; las aplicaciones móviles muestran todas las imágenes a ancho completo.

Sin alojamientos externos

Una imagen solo se inserta desde el almacén propio de la wiki, por su ruta /s/. Una escritura que nombra una imagen en GitHub, Imgur u otro alojamiento, un URI data: o una URL completa se rechaza, y una imagen de otro sitio que ya esté en un cuerpo se muestra como enlace. Las imágenes externas acaban rompiéndose, sufren límites de frecuencia y le dicen a su alojamiento quién leyó la página.

Sin almacenamiento de objetos no hay alternativa

Si ni upload_image ni request_upload aparecen en la lista de herramientas, el almacenamiento de objetos no está configurado en esta instancia y la inserción de imágenes no está disponible; un alojamiento externo no la sustituye.