Una herramienta de línea de comandos para convertir y publicar Markdown

Sube un archivo Markdown desde un terminal y recibe su enlace. Un solo archivo de JavaScript sin dependencias, que habla con la misma API y los mismos conversores que el sitio.

Leer la referencia de la línea de comandos

Un archivo, sin dependencias

`cli/tp.mjs`, en el repositorio público, es un cliente de la misma API. Es un único archivo sin nada que instalar a su lado — una herramienta que se ejecuta en CI no debería arrastrar un árbol de paquetes detrás —, y necesita Node 20 o posterior.

Desde una copia del repositorio se ejecuta como `node cli/tp.mjs`; su paquete llama al comando `tp`, y así están escritos los ejemplos de esta página. `tp --help` enumera cada comando y cada opción.

Es también lo que ejecuta la GitHub Action, así que un comando que funciona en tu máquina se comporta igual en un workflow.

Convertir y publicar

`tp push README.md --share` convierte el archivo, lo guarda en tu cuenta e imprime su enlace. Un `.html`, `.csv`, `.tsv`, `.json` o `.enex` de Evernote que subas lo convierte a Markdown el servidor al llegar, en lugar de guardarlo como si ya fuera Markdown.

Los archivos que la API recibe como bytes y no como texto — `.docx`, `.xlsx`, `.pptx`, `.epub`, `.odt`, `.rtf` y los zips de exportación — se rechazan, con la dirección de la página del sitio que los lee en el navegador.

`--merge` encadena varios archivos Markdown en un solo documento, en el orden dado, con una línea entre ellos, y `--name` le pone nombre: `tp push docs/*.md --merge --share --name handbook.md`.

`--share` crea un enlace que puede abrir cualquiera que lo tenga, y `--share people` deja el documento solo para lectores nombrados, cuyas direcciones añades en el sitio. `--expires 7d`, `12h` o `2026-12-31` termina el enlace — una fecha sola vale el final de ese día donde tú estás —, y `--password` lo protege con una contraseña leída de `TP_SHARE_PASSWORD`, nunca de un argumento, donde se quedaría en el historial de tu shell.

Un enlace, siempre al día

`tp push notes.md --update <id>` envía texto nuevo a un documento que ya existe. Su id, su enlace, su contraseña y su fecha de caducidad siguen como estaban, y el texto sustituido se guarda en el servidor como revisión, las diez más recientes. Subir el mismo texto otra vez no cambia nada.

`--replaces <id>` hace a propósito lo contrario: crea un documento nuevo, con su propio id y, cuando se comparte, su propio enlace, y lo registra como la siguiente versión de uno anterior, lo que `tp versions <id>` enumera como una cadena. Un enlace ya enviado sigue mostrando lo que mostraba.

Carpetas y la cuenta

`tp list` muestra lo que hay en la cuenta, y `--q` busca en el texto de los documentos. `tp rm <id>` manda un documento a la Papelera, donde espera 14 días; `tp usage` imprime cuánto se usa de los 250 MB y los 5.000 documentos; `tp summary <id>` pide un resumen breve, hecho una vez y guardado en caché.

`--folder "Team/Notes"` al subir archiva el documento por su ruta y crea cualquier parte de la ruta que aún no exista. `tp folders` imprime el árbol con los id, `tp mkdir` y `tp mv` crean y mueven, `tp rmdir` quita una carpeta y sube un nivel lo que contenía, y `tp share-folder` comparte una carpeta entera con `--link`, `--people` o `--private`, con los mismos `--expires` y `--password`.

Claves y scripts

`tp login tp_live_…` guarda una clave en `~/.config/tp/config.json`, legible solo por ti. Una clave también puede venir de `--key` o de `TP_API_KEY`, que se leen primero; la variable de entorno es la indicada para CI, porque `tp login` deja la clave en el historial de tu shell.

`--json` imprime la respuesta de la propia API en lugar de las líneas de resumen, que es lo que lee la Action, y `TP_HOST` apunta la herramienta a otro despliegue. Un fallo imprime el mensaje de la API con su estado y sale con un código distinto de cero, para que un script o una pipeline se detenga donde debe.