No description
Find a file
2025-05-13 11:29:20 +02:00
.vscode try finding article name from content 2024-11-11 00:03:42 +01:00
exports change enrich template 2024-11-03 11:42:44 +01:00
output up 2025-02-23 15:50:56 +01:00
server-configs rewrite build url 2024-11-05 11:17:52 +01:00
sources add series 2025-05-13 11:29:20 +02:00
templates add series 2025-05-13 11:29:20 +02:00
utils add series 2025-05-13 11:29:20 +02:00
WIP up osmose 2025-05-12 19:39:30 +02:00
.gitignore remove venv 2025-03-27 13:38:42 +01:00
atom_generate.py flux rss avec année dans le slug 2025-04-28 23:32:01 +02:00
back_files_to_roam.sh up test on slug 2025-05-13 10:41:40 +02:00
check_links.py add quality control for links in a blog source 2025-03-27 13:37:58 +01:00
converters.sh testing utils, generate better gemini links 2025-02-27 22:59:57 +01:00
deploy.sh up deploy and remote sync 2024-11-19 14:43:25 +01:00
find_correspondances.py up paths 2024-11-19 13:49:39 +01:00
gather_tags_in_json.py fix template include for article 2025-05-13 00:13:57 +02:00
install.sh convert to gemini avec md2gemini, conversion de plusieurs langues 2025-02-27 16:18:47 +01:00
LICENSE Initial commit 2024-11-03 10:26:01 +01:00
linking_articles_prev_next.py add series 2025-05-13 11:29:20 +02:00
new_article.py up regen 2025-02-28 18:43:17 +01:00
pictures_resize.py up logging of generation 2025-02-23 19:12:15 +01:00
publish_websites.sh puublish script, up line jump 2024-11-18 12:30:15 +01:00
README.md add series 2025-05-13 11:29:20 +02:00
sass_styles.sh fix template include for article 2025-05-13 00:13:57 +02:00
scan_links.py add quality control for links in a blog source 2025-03-27 13:37:58 +01:00
server_update.sh add cronjob server update cipherbliss blog 2025-05-13 00:23:40 +02:00
stats.py up regen 2025-02-28 18:43:17 +01:00
test_org_conversion.py up regen 2025-02-28 18:43:17 +01:00
test_utils.py add series 2025-05-13 11:29:20 +02:00
update_on_server.sh change up on server 2024-11-20 12:11:24 +01:00
utils.py rewriter of gemini links 2025-02-28 19:48:30 +01:00
website_config.py add series 2025-05-13 11:29:20 +02:00

orgmode-to-gemini-blog

Génération de capsules gemini et blog html à partir d'articles en fichiers Orgmode.

exemple avec le blog de DragonFeu. sources/dragonfeu_blog

Les articles sont écrits dans le dossier source/, leur nom permet de déduire l'ordre de publication grâce à une date YYY-MM-DD en début de nom de fichier.

Une fois vos fichiers Orgmode placés dans un dossier de sources/votre_blog, lancez la commande:

bash converters.sh votre_blog

Si vous n'avez pas encore de fichiers org dedans, une structure vierge sera crée avec des dossiers pour les pages de contenu, les articles en français, et en anglais.

création d'un article

Pour un article en langue En (english), sur le blog cipherbliss_blog, donner le titre entre guillemets ainsi:

python3 new_article.py cipherbliss_blog en "Creation of a gemini blog"

On peut se faire un alias de commande en bash pour n'avoir à remplir que le titre pour un blog donné.

Inclure des images

Dans un article on souhaite avoir des thumbnails liées à leur version plus grande et hébergées sur notre site. Placez vos images et autres documents de votre article dans le dossier, puis lancez la commande de conversion et déplacement de vos fichiers.

python3 pictures_resize.py

Vos miniatures sont crées, et les images originales sont déplacées dans un dossier output/pictures/{année_courante}.

Un texte orgmode sera mis à disposition dans output/images_{année_courante].org pour les intégrer dans votre ou vos articles Org. Un préfixe de chemin relatif de ces images est configuré dans website_config.py

Il vous faudra placer les images sur votre serveur.

prérequis pour installation

Avoir des articles au format org, les mettre dans un dossier source/nom_du_blog, et avoir quelques bibliothèques dispo:

bash install.sh

[2024-11-04] Testé avec: Pandoc 2.9.2.1 http://fr.archive.ubuntu.com/ubuntu/pool/universe/p/pandoc/pandoc_2.9.2.1-3ubuntu2_amd64.deb

Python 3.10.12

Conversion des fichiers Org vers gemini et html

bash converters.sh tykayn_blog

Ceci va convertir ce qui se trouve dans le dossier sources/tykayn_blog et produire un site web dans html_output/tykayn_blog ainsi qu'une capsule gemini dans capsules-gemini/tykayn_blog

Conversion de blog en capsule gemini

:PROPERTIES: :CREATED: [2024-11-02 12:08:22] :END:

L'idée est d'avoir un ensemble de billets de blogs en texte simple versionnés avec git et servis par une capsule gemini ainsi que par un site web. On aura besoin de convertir des billets existants, et de rédiger les nouveaux dans un format qui nous convient, par exemple markdown ou orgmode afin de rendre le tout le plus pérenne possible. On aura aussi besoin de référencer les images dans un dossier de notre dépot, et de gérer les relations entres articles pour que les liens aient du sens sur la capsule gemini autant que dans la version web. On souhaite aussi fournir un flux RSS, et un template de billet de blog avec une entête et un pied de page commun qui donne des moyens de contact, de soutenir l'auteur, et de revenir à l'accueil. On prendra aussi en charge différentes pages:

  • à propos
  • contact
  • nos projets
  • une liste des articles triés par date. Il nous faudra aussi un script de mise à jour du blog qui se charge de mettre à jour le flux rss, le dépot git. On peut aller chercher de l'automatisation dans la gestion de plusieurs capsules différentes en tagguant les articles par nom de blog, ce qui nécessite un fichier de config pour les correspondances.

export d'articles existants

Depuis wordpress

Connec à la base de données mysql, et extraction de chaque article pour récupérer la partie HTML et la convertir en markdown et en fichiers org.

Depuis des fichiers orgmode.

J'écris en orgmode une base de connaissances qui contient aussi un export de mes anciens billets de blog dans un dossier par blog. Pour cibler quels billets utiliser pour quel blog j'ai donc deux possibilités: leur chemin de fichier, ou des tags particuliers présents dans les fichiers org. id:5a197a1b-ddfe-4c79-8934-d9a28ab6df65][Textes de blog en préparation https://forge.chapril.org/tykayn/org-report-stats

Flux créatif

Rédaction, conversion, completion des nouveaux articles, régénération des indexs et flux rss, mise à jour du dépot git, publication des pages.

Sources d'inspiration:

Offpunk, LazyBlog, Dotclear, Wordpress, Hugo, Pélican, Pandoc, PandocGmi

https://github.com/njamescouk/pandocGmi/tree/master

Contrôle qualité

## Examen des liens morts

Lister tous les liens dans les fichiers org des sources d'un blog:

py scan_links.py cipherbliss_blog

Scanne le dossier et donne un fichier json donnant les noms de domaines trouvés, ainsi que la liste des liens par article dans links_report_cipherbliss_blog.json .

Ensuite, on peut tester la viabilité des liens donnés avec check_links.py:

py check_links.py cipherbliss_blog

# Tests Lancer les tests avec

py test_utils.py

Roadmap

  • réécriture des liens internes

    • conversion des liens avec nom de domaine si relatifs
    • détection des ID org-roam pour réécrire les liens html lors de la génération de site web et capsule gemini.
    • réécriture des url des images vers le dossier courant
  • gestion des séries d'articles dans la config de site website_config.py, ce qui crée des indexes de séries et précise les autres posts de la série en fin d'article.

  • mettre un lien vers le fichier Org d'origine en fin d'article, disponible sur une forge en ligne si on l'a mis en config du site web.

  • vérifier que les pages non articles sont bien générées

  • documenter les scripts

    • find_correspondances.py
    • atom_generate.py
    • deploy.sh
    • back_files_to_roam.sh, syncroniser les fichiers orgmode sources vers le dossier org-roam. Org-Roam ne permet que de gérer un seul dossier.

Fait

  • les gains de performance pour ne pas régénérer les pages déjà faites alors qu'elles n'ont pas été modifiée, et un rendu statique un peu plus joli
  • page pour un tag listant les articles, trier par date décroissante
  • en fin d'article, mettre le texte incitant au soutien de l'auteur
  • faire la conversion en page gemini dans linking_articles_prev_next.py
  • liste de N derniers articles développés sur l'accueil, 10 par défaut
  • template footer article: gestion article suivant et précédent
  • sérendipité, navigation
    • liens en bas de page vers d'autres articles, et les précédents et suivants.
    • auto tagging avancé avec plusieurs termes reliés à un seul, liste personnalisée par configuration de blog
  • pages de tags
  • génération de fichiers gmi
  • config par site web de son nom de domaine
  • navigation sur les pages d'article
  • gestion des langues dans la source et la destination
  • gestion multi site et multi langue
    • vérifier que les flux Atom sont valides