Vor langer Zeit hatte ich mal eine sehr umständliche Möglichkeit geschaffen, um in der Shell anzuzeigen, welche Tags und Kategorien in meinem Blog wie häufig verwendet wurden.

Das habe ich nun deutlich vereinfacht.

Update
2024-01-09: Das Script ist jetzt in meinem veröffentlichten Hugo Helper enthalten, siehe hier.

Alte Lösung mit Hugo und sehr umständlich

Früher hatte ich das mit Hilfe von Hugo gemacht, das lokal eine eigene Seite im Blog erstellt hat. Die HTML-Ausgabe davon habe ich dann durch diverse Shell-Kommandos gefiltert und heraus kamen Tags und deren Häufigkeit. Das musste man dann ab und zu mal neu generieren lassen und war alles andere als einfach zu benutzen. Details siehe hier.

Jetzt ohne Hugo

Jetzt habe ich das außerhalb von Hugo mit einem Python-Script und einem Shell-Script umgesetzt.

Ich habe ein Shell-Script erstellt, das alle Tags und Kategorien aller Blogbeiträge mit Hilfe von yq ausliest und in eine Datei schreibt, die von einem Python-Script eingelesen wird und Häufigkeit der Tags und Kategorien bestimmt und das Ergebnis in einer endgültigen Datei speichert.

Man könnte das auch alles in einem einzigen Python-Script unterbringen, doch ich kann das nicht. Ich habe es versucht, es aber nicht geschafft.

Detaillierter Ablauf

Im ersten Schritt werden im content-Verzeichnis des Blogs mit find und mit Hilfe von yq alle Tags jedes Blogbeitrags ausgelesen und ein eine Datei geschrieben:

find -iname "*.md" -exec yq --front-matter=extract ".tags" '{}' >> "/tmp/tmp_tags.list" \;

Für diesen Blogbeitrag hier würde die Ausführung dieser Zeile ergeben:

- Web
- Hugo
- Bash
- Python
- Shell

Das Ergebnis ist eine Datei mit ca. 9000 unsortierten und sehr vielen Zeilen und doppelt vorkommenden Tags, weil für jeden Blogbeitrag die Liste aller dort verwendeten Tags in die Datei eingefügt wird.

Im nächsten Schritt wird das Python-Script aufgerufen, das diese Datei Zeile für Zeile einliest, für jedes neue Wort einen eigenen Zähler in einem Dictionary erstellt und für bereits vorgekommene Wörter den Zähler um 1 erhöht. Ich habe dafür hier ein passendes Script gefunden und es für meine Zwecke angepasst.

Am Ende des Python-Scripts wird das Dictionary sortiert ausgegeben und in eine finale Datei umgeleitet.

Ein Auszug der finalen Datei mit nur noch 819 Zeilen mit je einem Tag pro Zeile und dessen Häufigkeit im Blog:

[…]
Aussicht 5
Auswertungen 5
Autobahn 7
Autofahrer 9
Autos 129
Avatar 1
BNN 2
BOA 2
[…]
Zebrastreifen 4
Zeichnen 2
Zeit Online 4
Zeitraffer 2
Zeitungen 8
Zeitzonen 1
Zertifikate 4
Zuständigkeiten 1
ZweiRat 3
[…]

Mit Hilfe des Tools fzf (Fuzzy Finder) kann ich nun sehr einfach in dieser Datei nach Tags suchen, die im Blog verwendet wurden und sehe auch gleich die Häufigkeit.

Und hier ein Video von der Benutzung mittels fzf:

(Link zum Video)

Update der Daten

Um die Daten zu aktualisieren, muss ich nur ab und zu das Script ausführen und die Ausführung dauert nur ein paar Sekunden.