diff --git a/Scripts/Lib/Html2Markdown.js b/Scripts/Lib/Html2Markdown.js new file mode 100644 index 00000000..a237a089 --- /dev/null +++ b/Scripts/Lib/Html2Markdown.js @@ -0,0 +1,18 @@ +const Exp = {}; + +const TurndownService = require('turndown'); +const turndownService = (new TurndownService({ + headingStyle: "atx", + hr: "---", + bulletListMarker: "*", + codeBlockStyle: "fenced", + fence: "```", + emDelimiter: "_", + strongDelimiter: "**", + linkStyle: "inlined", +})); +turndownService.keep(['span', 'small', 'sup', 'sub', 'table', 'dl', 'iframe', 'video', 'audio']); + +Exp.Transform = (html) => turndownService.turndown(html); + +module.exports = Exp; diff --git a/Scripts/ListedDownsync.js b/Scripts/ListedDownsync.js index bbb63bcb..debfca26 100755 --- a/Scripts/ListedDownsync.js +++ b/Scripts/ListedDownsync.js @@ -1,7 +1,7 @@ #!/usr/bin/env -S node --experimental-fetch require('./Lib/Syncers.js').importAll(); const JSDOM = require('jsdom').JSDOM; -// TODO: turndown HTML to Markdown +const Html2Markdown = require('./Lib/Html2Markdown.js').Transform; const BlogURL = 'https://listed.to/@u8'; // Full base URL of the Listed blog (any server) const SiteName = 'sitoctt'; @@ -18,12 +18,16 @@ const FrontmatterNew = { }; let Replacements = { // Format: { ReplaceWithString: [ToFindString] } "
È da direi parecchio tempo che uso Standard Notes come app di note personali.
-Anni fa l'avevo scelta per il suo essere libera e open-source, ma allo stesso tempo molto pulita, curata, e funzionale. Capitava a pennello in un momento in cui cercavo qualcosa che supportasse una cifratura dei dati che funziona, senza inficiare sull'usabilità.
Senza dilungarmi su perché poi mi è piaciuto continuare ad usarla, poi ho smesso, e poi ho ripreso fino ad arrivare ad ora, bisogna approfondire su una in particolare delle sue funzioni integrate: Listed.
-Si tratta di una piattaforma di blogging concepita dagli stessi sviluppatori di Standard Notes, e disponibile per il self-hosting oppure l'uso gratuito sull'istanza ufficiale. Per quanto io non l'abbia mai davvero usata prima, ho trovato fin dall'inizio interessante il concetto e la sua applicazione.
Da qualche giorno fa, invece, ho iniziato a giochicchiare con ChatGPT. Questione totalmente diversa questa, si, ma centra perché mi sono posta una domanda: tutte queste conversazioni che sto facendo con l'intelligenza artificiale, dove posso metterle per tenerle integrali, organizzate, ritrovabili e accessibili a chiunque, e per me facili da caricare?
+Da qualche giorno fa, invece, ho iniziato a giochicchiare con [ChatGPT](https://listed.to/@ChatGPT_Experiences). Questione totalmente diversa questa, si, ma centra perché mi sono posta una domanda: tutte queste conversazioni che sto facendo con l'intelligenza artificiale, dove posso metterle per tenerle integrali, organizzate, **ritrovabili** e accessibili a chiunque, e per me **facili da caricare**? -La scelta stava per ricadere sull'usare staticoso, il mio generatore di siti statici che già uso per il sitoctt, ma poi ci ho ripensato.
+La scelta stava per ricadere sull'**usare [staticoso](https://gitlab.com/octtspacc/staticoso)**, il **mio generatore** di siti statici che già uso per il [sitoctt](https://sitoctt.octt.eu.org), ma poi **ci ho ripensato**. -Ho pensato che, appunto, voglio rendere effettivamente la mia collezione di esperienze ritrovabile sul Web. Il problema qui, però, che ho potuto amaramente constatare in tutti questi mesi, è come il mio sito ad esempio sia, come dire... I motori di ricerca non se lo cagano. 😭
-Oltre ad essere pure questo un argomento a parte, va precisato che la colpa della orrenda sorte del mio sito non dipende dal suo codice; è colpa del dominio e/o dell'host. Quindi, no, non abbandonerò mai il mio staticoso: il solo cambiare generatore (e i template di conseguenza) con uno magari fatto seriamente non risolverebbe alcun problema.
Ho dovuto insomma cestinare totalmente l'idea dell'hosting su GitHub e GitLab, e pensare ad altro.
+Ho dovuto insomma **cestinare** totalmente l'idea del**l'hosting su GitHub e GitLab**, e pensare ad altro. -Le mie idee erano finite e, dato che avevo fretta di mettere su questo sito ed iniziare a caricarci le esperienze avute con ChatGPT, considerando quanto mamma mia era comodo copiare ed incollare le cose direttamente in Standard Notes, questo era il momento buono di provare Listed.
+Le mie idee erano finite e, dato che avevo fretta di mettere su questo sito ed iniziare a caricarci le esperienze avute con ChatGPT, considerando quanto _mamma mia_ era **comodo** copiare ed incollare le cose **direttamente in Standard Notes**, questo era il **momento buono di** provare **Listed**. -A dirla tutta, mi preoccupa un po' il prospetto che il file di backup settimanale delle note possa diventare grosso decine di MB, ma ormai il dado è tratto.
-Potrei creare un secondo account da usare solo per le note di ChatGPT, esportandole dal primario ed importandole lì, per poi cancellarle dal primo account per alleggerire la raccolta, però ci sono dei problemi. Forse riesco a trasferire l'username, ma i link ai singoli post saranno rotti, perché includono degli ID automatici, e quindi via di redirect alla home per chi ne segue uno vecchio. Inoltre, i vecchi messaggi del guestbook non vengono ricopiati, e mi sa che nemmeno le iscrizioni via email sono trasferite.
Tutto sommato comunque, per questo scopo limitato ho apprezzato quanto sia efficiente avere Standard Notes come parte finale del mio flusso di lavoro. Mi sembra riduca di molto l'effetto "mi scoccio".
+Lasciamo stare le pagine tematiche, che sono _bestie a parte_; lasciamo stare pure i post lunghi, che mi richiedono forte ispirazione e abbastanza tempo di stesura; però che cavolo, almeno **qualcosa** per il MicroBlog, che va per le corte, **mi andrebbe** di crearla **più spesso**! Però **mi passa** proprio **la voglia**, per qualche motivo, considerando tutta la trafila che devo fare. +A dire il vero, avevo preso già da subito l'abitudine di iniziare a scrivere un post in Standard Notes, così da poter più flessibilmente gestire il tutto, magari passando rapidamente da un dispositivo all'altro. Però, se dovevo mettermi a scrivere qualcosa di non lungo ed elaborato, da pubblicare prima possibile, non mi veniva proprio la voglia di agire. -Considerato dunque il piacere della scoperta, ho per un attimo riflettuto su come il fattore "che palle" sia una delle cose che mi trattiene dall'aggiornare il sitoctt con migliore frequenza.
+"_Ma perché non passo a **Listed almeno per il** mio **microblog**?_", penso dunque. Beh, c'è un motivo se addirittura sono arrivata a farmi il mio generatore di siti statici: mi serve!... _E se anche non mi servisse più e potrei dunque smettere di usarlo, non ci vorrei onestamente nemmeno pensare a fare una cosa del genere, dopo tutto il lavoro!_ 😖 -Lasciamo stare le pagine tematiche, che sono bestie a parte; lasciamo stare pure i post lunghi, che mi richiedono forte ispirazione e abbastanza tempo di stesura; però che cavolo, almeno qualcosa per il MicroBlog, che va per le corte, mi andrebbe di crearla più spesso! Però mi passa proprio la voglia, per qualche motivo, considerando tutta la trafila che devo fare.
-A dire il vero, avevo preso già da subito l'abitudine di iniziare a scrivere un post in Standard Notes, così da poter più flessibilmente gestire il tutto, magari passando rapidamente da un dispositivo all'altro. Però, se dovevo mettermi a scrivere qualcosa di non lungo ed elaborato, da pubblicare prima possibile, non mi veniva proprio la voglia di agire.
"Ma perché non passo a Listed almeno per il mio microblog?", penso dunque. Beh, c'è un motivo se addirittura sono arrivata a farmi il mio generatore di siti statici: mi serve!... E se anche non mi servisse più e potrei dunque smettere di usarlo, non ci vorrei onestamente nemmeno pensare a fare una cosa del genere, dopo tutto il lavoro! 😖
+Comunque, per dirla bene, **Listed è parecchio scarno**: permette appena di inserire **CSS** personalizzato, e di formattare i post in **Markdown** e un **sottoinsieme** ristretto di **HTML**. Di quest'ultimo propongo di seguito le mie analisi: -` (ad esempio, non si può avere `
Erre`, sarà sempre `Erre
`); +* Qualsiasi **attributo** di elemento che non sia `id`, `class`, o `style`, (ed `href` o `src`, così come credo roba come `title`, `width`, o `height`, nei casi opportuni) **viene buttato** via: scordatevi quindi, per dire, di deviare dalla configurazione predefinita della piattaforma per quanto riguarda il comportamento dei link (il `rel` non si tocca); +* **Certi elementi** proprio non vanno: quelli con tag non-standard (custom insomma, tipo `