Carica un file Markdown da un terminale e ricevi il suo link. Un solo file JavaScript senza dipendenze, che parla con la stessa API e con gli stessi convertitori del sito.
Leggi il riferimento della riga di comando
`cli/tp.mjs`, nel repository pubblico, è un client della stessa API. È un file unico senza nulla da installare accanto — uno strumento che gira nella CI non deve trascinarsi dietro un albero di pacchetti —, e richiede Node 20 o successivo.
Da una copia del repository si lancia come `node cli/tp.mjs`; il suo pacchetto chiama il comando `tp`, ed è così che sono scritti gli esempi di questa pagina. `tp --help` elenca ogni comando e ogni opzione.
È anche quello che esegue la GitHub Action, quindi un comando che funziona sulla tua macchina si comporta allo stesso modo in un workflow.
`tp push README.md --share` converte il file, lo conserva nel tuo account e stampa il suo link. Un `.html`, `.csv`, `.tsv`, `.json` o `.enex` di Evernote caricato viene convertito in Markdown dal server all’arrivo, invece di essere salvato come se fosse già Markdown.
I file che l’API riceve come byte e non come testo — `.docx`, `.xlsx`, `.pptx`, `.epub`, `.odt`, `.rtf` e gli zip di esportazione — vengono rifiutati, con l’indirizzo della pagina del sito che li legge nel browser.
`--merge` concatena più file Markdown in un solo documento, nell’ordine dato, con una linea tra l’uno e l’altro, e `--name` gli dà un nome: `tp push docs/*.md --merge --share --name handbook.md`.
`--share` crea un link che chiunque lo abbia può aprire, e `--share people` riserva il documento a lettori indicati, i cui indirizzi aggiungi sul sito. `--expires 7d`, `12h` o `2026-12-31` chiude il link — una data da sola vale la fine di quel giorno dove ti trovi —, e `--password` lo protegge con una password letta da `TP_SHARE_PASSWORD`, mai da un argomento, dove resterebbe nella cronologia della shell.
`tp push notes.md --update <id>` invia testo nuovo a un documento che esiste già. Il suo id, il suo link, la sua password e la sua scadenza restano come erano, e il testo sostituito è conservato sul server come revisione, le dieci più recenti. Caricare di nuovo lo stesso testo non cambia nulla.
`--replaces <id>` fa di proposito il contrario: crea un documento nuovo, con un id suo e, quando è condiviso, un link suo, e lo registra come versione successiva di uno precedente, che `tp versions <id>` elenca come una catena. Un link già inviato continua a mostrare quello che mostrava.
`tp list` mostra cosa c’è nell’account, e `--q` cerca nel testo dei documenti. `tp rm <id>` sposta un documento nel Cestino, dove aspetta 14 giorni; `tp usage` stampa quanto dei 250 MB e dei 5.000 documenti è in uso; `tp summary <id>` chiede un breve riassunto, fatto una volta e poi tenuto in cache.
`--folder "Team/Notes"` durante il caricamento mette il documento nel suo percorso e crea ogni parte del percorso che ancora non c’è. `tp folders` stampa l’albero con gli id, `tp mkdir` e `tp mv` creano e spostano, `tp rmdir` rimuove una cartella e porta il suo contenuto su di un livello, e `tp share-folder` condivide un’intera cartella con `--link`, `--people` o `--private`, con gli stessi `--expires` e `--password`.
`tp login tp_live_…` salva una chiave in `~/.config/tp/config.json`, leggibile solo da te. Una chiave può anche arrivare da `--key` o da `TP_API_KEY`, che vengono letti per primi; la variabile d’ambiente è quella da usare nella CI, perché `tp login` lascia la chiave nella cronologia della shell.
`--json` stampa la risposta dell’API invece delle righe di riepilogo, ed è ciò che legge l’Action, mentre `TP_HOST` punta lo strumento a un’altra installazione. Un errore stampa il messaggio dell’API con il suo stato ed esce con un codice diverso da zero, così uno script o una pipeline si ferma dove deve.