認証済み AgentReady.md 証明書
発行日時 sig: 8265ba23c7e7bf38 検証 →

分析済みURL

https://tuxproject.de/

計測: 2 週間前

別のURLを分析

AI-Readyスコア

不十分

/ 100

トークン削減量

HTMLトークン 10.662
Markdownトークン 4620
削減率 57%

スコア内訳

セマンティックHTML 40/100
コンテンツ効率 80/100
AI発見可能性 20/100
構造化データ 10/100
アクセシビリティ 100/100

新興プロトコル

6件中0件検出

AIエージェントが探すwell-knownエンドポイント。検出されればエージェントが自動的にあなたのサービスを発見・接続できます。

  • OAuth Protected Resource RFC 9728
    /.well-known/oauth-protected-resource
  • OAuth Discovery RFC 8414
    /.well-known/oauth-authorization-server
  • MCP Server Card SEP-1649 draft
    /.well-known/mcp/server-card.json
  • A2A Agent Card A2A v1.0
    /.well-known/agent-card.json
  • API Catalog RFC 9727
    /.well-known/api-catalog
  • Agent Skills index Discovery RFC v0.2.0 draft
    /.well-known/agent-skills/index.json

この数字は動きます。 モニタリングは開発中です。リストに登録すると公開時にお知らせします。

リストに登録されました!サービス開始時にお知らせします。

計測結果 No llms.txt found

サイトにllms.txtファイルがありません。これはAIエージェントがサイト構造を理解するための新しい標準です。

実装方法

llmstxt.org仕様に従って/llms.txtファイルを作成してください。サイトの説明と主要ページへのリンクを含めてください。

コーディングエージェントに貼り付けて修正させる

計測結果 No headings found

見出し構造に問題があります(レベルの飛ばしや複数のh1タグ)。クリーンな階層はAIエージェントがコンテンツ構成を理解するのに役立ちます。

実装方法

ページごとに正確に1つの<h1>を持ち、見出しが順番に従うようにしてください:h1 > h2 > h3。レベルを飛ばさないでください(例:h1から直接h3)。

コーディングエージェントに貼り付けて修正させる

計測結果 No Markdown for Agents support detected

サイトがMarkdown for Agentsに対応していません。このCloudflare標準により、AIエージェントがmarkdown形式でコンテンツをリクエストでき、トークン使用量を約80%削減できます。

実装方法

以下の1つ以上を実装してください:(1) Accept: text/markdownにmarkdownコンテンツで応答。(2) .md URL(例:/page.md)を提供。(3) <link rel="alternate" type="text/markdown">タグを追加。(4) markdown検出用のLink HTTPヘッダーを追加。

コーディングエージェントに貼り付けて修正させる

計測結果 No sitemap found

サイトマップが見つかりません。サイトマップはAIエージェントがサイトのすべてのページを発見するのに役立ちます。

実装方法

すべての公開ページをリストした/sitemap.xmlを作成してください。ほとんどのCMSプラットフォームで自動生成できます。

コーディングエージェントに貼り付けて修正させる

計測結果 No Content-Signal found (robots.txt or HTTP headers)

Content-Signalディレクティブが見つかりません。これらはAIエージェントにコンテンツの使用方法(検索インデックス、AI入力、トレーニングデータ)を伝えます。推奨場所はrobots.txtです。

実装方法

robots.txtにContent-Signalを追加:User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no。markdown応答のHTTPヘッダーとしても追加できます。

コーディングエージェントに貼り付けて修正させる

計測結果 0/1 images with meaningful alt text

一部の画像に説明的なalt属性がありません。適切なalt属性はAIエージェントが画像の内容とコンテキストを理解するのに役立ちます。

実装方法

すべての画像に説明的なalt属性を追加してください。「画像」や「写真」だけでなく、画像の内容を説明してください。装飾的な画像にはalt=""(空)を使用してください。

コーディングエージェントに貼り付けて修正させる

計測結果 No JSON-LD / Schema.org found

Schema.org構造化データが見つかりません。JSON-LDはAIエージェントがページから事実に基づいた構造化情報を抽出するのに役立ちます。

実装方法

Schema.orgマークアップを含む<script type="application/ld+json">ブロックを追加してください。適切なタイプを使用:ブログ投稿にはArticle、製品ページにはProduct、企業ページにはOrganization。

コーディングエージェントに貼り付けて修正させる

計測結果 2 semantic elements, 293 divs (ratio: 1%)

ページが<div>要素に大きく依存しています。<section>、<nav>、<header>、<footer>、<aside>などのセマンティック要素はAIエージェントに意味のある構造を提供します。

実装方法

汎用的な<div>コンテナを適切なセマンティック要素に置き換えてください。テーマ別グループには<section>、ナビゲーションには<nav>、ページ/セクションのヘッダーとフッターには<header>/<footer>を使用してください。

コーディングエージェントに貼り付けて修正させる

計測結果 0/3 OG tags present

Open Graphタグが不足または不完全です。OGタグはAIエージェント(およびソーシャルプラットフォーム)がページのタイトル、説明、画像を理解するのに役立ちます。

実装方法

ページの<head>にog:title、og:description、og:imageメタタグを追加してください。

コーディングエージェントに貼り付けて修正させる

計測結果 No meta description

メタディスクリプションが見つかりません。このタグはAIエージェントと検索エンジンにページの簡潔な要約を提供します。

実装方法

ページコンテンツの150-160文字の説明を含む<meta name="description" content="...">タグを追加してください。

コーディングエージェントに貼り付けて修正させる
Markdownトークン: 4620
**tuxproject.de** [(warum "tuxproject"?)](https://tuxproject.de/blog/2011/09/statistiken-september-11/)
· tux: maskottchen des kernels "linux", ein wohlgenährter, glücklicher pinguin.
· project: engl. für "projekt", auch abk. f. "projection".

**Willkommen!**

Ursprünglich sollte an dieser Stelle eines Tages der Nachfolger des *Sumpfkuh Projects*, meiner Uralt-*Netzseite*, zu finden sein. So eine Internetseite als *digitale Visitenkarte* hat ja heutzutage anscheinend fast jeder, und da kann sich ein digital agierender Bürger, wie ich es bin, nur schwerlich in Zurückhaltung üben.

Tatsächlich dient *tuxproject.de*, wie der Name schon sagt, mit seiner eher zweckmäßigen Gestaltung stattdessen vor allem als Übersicht über meine gegenwärtig laufenden Codeprojekte (einige davon mit kurzer Erläuterung) und weniger als Einblick in mein Privatleben. Vielleicht findet ihr, die ihr womöglich nur versehentlich hier gelandet seid, aber auch Gefallen an einem meiner Projekte - dann lasst mir doch eine [Spende](https://tuxproject.de/#spenden) da!

Zu beachten ist, dass die folgende Liste nicht konsequent nach Aktualität sortiert ist. Es ist nicht auszuschließen, dass ich einige der unten stehenden Projekte seit Jahren nicht mehr geändert habe. Das kann sich allerdings eigentlich täglich ändern. Im Zweifel empfiehlt sich ein Blick in meine [Repositorys](https://tuxproject.de/#kontakt-impressum).

**Programmiertes:**

Common Lisp

[42links](https://42links.tuxproject.de/)

42links ist eine webbasierte Lesezeichenverwaltung mit API.

Rust

[@Kuckucksuhr](https://social.tchncs.de/@kuckucksuhr)

Eine Kuckucksuhr für Mastodon: Einmal pro Stunde gibt es einen neuen Schrei.

COBOL

Go

[Clipboard URL Cleaner](https://code.rosaelefanten.org/clipurlcleaner)

Eine Desktopanwendung für Windows und macOS, die alle gekürzten Links in der Zwischenablage automatisch in ihre ursprüngliche Form umwandelt.

Go

[dateadder](https://code.rosaelefanten.org/dateadder)

Berechnet in natürlicher Sprache formulierte Datumsangaben (zum Beispiel "tomorrow in four months") auf der Konsole.

Common Lisp

[DatePrefixCopy](https://code.rosaelefanten.org/dateprefixcopy)

Kopiert Dateien unter Windows per Drag&Drop mit dem Präfix des heutigen Datums.

PHP

[Default File Manager](https://tuxproject.de/projects/phpDefaultFileManager)

Aufgrund der Eigenschaft vieler verbreiteter alternativer Dateimanager, sich standardmäßig nicht mit Windowsordnern verknüpfen zu lassen, entwickelte ich dieses PHP-Script, das entsprechende .reg-Dateien erzeugt, die den Windows-Explorer durch einen beliebigen anderen Dateimanager ersetzen.

Go

[dehexify](https://www.donationcoder.com/forum/index.php?topic=49636.0)

dehexify ist eine einfache Windowsanwendung, die hexadezimal kodierte JSON-Objekte (etwa aus der Browserkonsole) zwecks besserer Analyse in lesbaren Text umwandelt.

Go

[delout](https://code.rosaelefanten.org/delout)

Dateien löschen. Aber als Breakout-Spiel.

C

[fileweight](https://code.rosaelefanten.org/fileweight)

IBM-Forscher haben vor einer Weile ermittelt, wie viele Eisenatome auf einer durchschnittlichen Festplatte pro Bit zum Einsatz kommen. Dieses Programm berechnet auf dieser Forschungsgrundlage das ungefähre Gewicht einer Datei.

PHP

[GDPR Blocking](https://www.donationcoder.com/forum/index.php?topic=45495)

Ein möglicher Umgang mit der Mitte 2018 eingeführten EU-Datenschutzgrundverordnung besteht darin, alle EU-Einwohner von der eigenen Website auszusperren. Zum Beispiel mit diesem Code.

Pascal

[groffstudio](https://groff.tuxproject.de/)

Während ich mit dem Textsatzsystem *groff* herumspielte, fiel mir das Fehlen einer *groff*\-Alternative zu TeXstudio und anderen LaTeX-IDEs auf. Daher beschloss ich, selbst eine zu programmieren.

C

[libvldmail](https://code.rosaelefanten.org/libvldmail/)

Es scheint unmöglich zu sein, E-Mail-Adressen auf Grundlage der zahlreichen einander gelegentlich scheinbar widersprechenden RFCs zu validieren.

libvldmail

ist mein Versuch, eine Bibliothek zu schreiben, um dieses Unmögliche möglich zu machen.

C++

[remv](https://code.rosaelefanten.org/remv/)

Dateien umbenennen mit regulären Ausdrücken.

Go

[rssfs](https://code.rosaelefanten.org/rssfs)

Eine Desktopanwendung, mit der RSS-Feeds als Dateisysteme gemountet werden können.

Common Lisp

[rssparser.lisp](https://code.rosaelefanten.org/rssparser.lisp)

Dieser RSS-Parser erzeugt RSS-Feeds aus beliebigen Websites.

Go

[sfd](https://www.donationcoder.com/forum/index.php?topic=50051)

Der Single File (Web) Downloader lädt einzelne Seiten aus dem Web herunter und bettet dabei CSS, JavaScripts und Bilddateien direkt in die erzeugte Datei ein.

JavaScript

Delphi

[Tiny Server Inventory](http://www.donationcoder.com/forum/index.php?topic=43325.0)

Da ich irgendwann beinahe den Überblick über die von mir betreuten Server und -dienste verloren hätte und Evernote dabei eher schlecht als recht zu helfen vermochte, programmierte ich diese Anwendung zur einfachen Serververwaltung. Es handelt sich im Wesentlichen um eine einfache Datenbankoberfläche, über die Server und darauf laufende Dienste mit ein paar zusätzlichen Informationen erfasst werden können.

C

[twtxtc](https://hub.darcs.net/dertuxmalwieder/twtxtc)

Ein einfacher Client für das Mikroblogsystem [twtxt](https://github.com/buckket/twtxt).

Rust

[ws2markdown](https://code.rosaelefanten.org/ws2markdown)

Konvertiert WordStar-Dateien in das Markdownformat.

Rust

[yaydl](https://crates.io/crates/yaydl)

Eine weitere, bewusst minimalistisch gehaltene Möglichkeit, Videos von YouTube (und anderen Seiten) herunterzuladen.

Rust

[zb](https://crates.io/crates/zb)

zb ist ein ZipBlog - also ein Programm, das eine komplette Website als Zip-Archiv enthalten kann. Markdown, Org und HTML werden unterstützt.

**WordPress:**

PHP
JavaScript

[MobileShare](https://www.donationcoder.com/forum/index.php?topic=47125.0)

Dieses WordPress-Plugin ist eine Implementierung des [share-APIs](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share) für mobile Geräte und erlaubt eine einfache Integration der nativen Teilen-Funktion mit WordPress.

PHP
JavaScript

[WP-PasteExtender](https://tuxproject.de/projects/wp-pasteextender)

Der WP-PasteExtender ist ein WordPress-Plugin, das kopiertem Text automatisch einen Verweis auf die Originalseite anfügt.

PHP

[WP-WahlBlackout](https://tuxproject.de/blog/2013/08/wahl-schwach-o-mat/)

Dieses WordPress-Plugin schaltet an einem einstellbaren Tag die Website bis 18 Uhr ab und blendet einen Hinweistext ein, der Besucher dazu auffordert, wählen zu gehen.

**Politischer Code:**

Go

[DKP-Beschlusssdatenbank](https://code.rosaelefanten.org/dkp-beschluesse)

Die Parteitagsbeschlüsse der DKP liegen zumeist nur im PDF-Format vor. Diese Webanwendung überträgt die PDFs (halb)automatisch in eine Datenbank und macht ihren Inhalt durchsuchbar.

Go
JavaScript

[plakateapp](https://code.rosaelefanten.org/plakateapp)

Für die Wahlkämpfe der Piratenpartei programmiertes Werkzeug, um bequem vom Smartphone (oder Desktop) aus die Position aufgehängter Plakate miteinander zu teilen.

**Browseraddons:**

JavaScript

[quick generator peek](https://chrome.google.com/webstore/detail/quick-generator-peek/mpndogblhaibianlfcpjdjhacgljabjb)

Eine Chromeerweiterung, die den "Generator" einer Website anzeigt, sofern gesetzt.

JavaScript

[UnClouder](https://addons.mozilla.org/de/firefox/addon/unclouder/)

Der UnClouder ersetzt das Marketing-Quatschwort "Cloud" auf deutsch- und englischsprachigen Websites durch "die Computer anderer Leute", um die Sicherheitsimplikationen deutlicher zu machen.

JavaScript

[Unping all the links!](https://chrome.google.com/webstore/detail/unping-all-the-links/dcjpehalmoajcikojdkmfgncbbgadkkj)

Diese Chrome-Erweiterung behebt das Problem, dass das nicht mehr abschaltbare "Hyperlink-Auditing" Sicherheit und Datenschutz [gefährdet](https://www.bleepingcomputer.com/news/security/hyperlink-auditing-pings-being-used-to-perform-ddos-attacks/).

C
JavaScript

[ymarks](https://ymarks.org/)

Eine selbst zu hostende Open-Source-Lösung zum Synchronisieren von Browserlesezeichen über mehrere Geräte hinweg.

**Weitere Plugins:**

Common Lisp

Coleslaw

Ich habe vor einiger Zeit begonnen, den Bloggenerator [Coleslaw](https://github.com/coleslaw-org/coleslaw) ein wenig zu erweitern. Beigetragen habe ich bisher Plugins zur Integration des Kommentarsystems [isso](https://github.com/posativ/isso) sowie [Matomo](https://www.matomo.org/) (früher Piwik). Inzwischen wurde ich aufgrund meiner Aktivität auch zum Projektmaintainer ernannt, womit ich wohl künftig schuld an allem sein werde. Schade.

Emacs Lisp

[logpad.el](https://code.rosaelefanten.org/logpad.el)

Im Jahr 2018 habe ich *logpad.vim* auf GNU Emacs portiert.

VimL

[logpad.vim](http://vim.sourceforge.net/scripts/script.php?script_id=2775)

Angeregt von [diesem](https://schwerdtfegr.wordpress.com/2009/08/27/eine-notepad-funkzjon-die-man-missen-lernt) Weblogeintrag entwickelte ich dieses Plugin für den Texteditor [Vim](https://www.vim.org/), das für diesen die aus dem Windows-Notepad bekannte Funktion nachrüstet, eine Logdatei zu erstellen und zu pflegen.

PHP

[OEmbed für ElkArte](https://code.rosaelefanten.org/ElkArte)

Die Forensoftware ElkArte, entstanden als Fork vom "Simple Machines Forum", kann schon eine Menge, aber noch nicht alles. Ich habe bisher ein OEmbed-Plugin für es programiert.

tmLanguage

[SublimeTodoTxt](https://github.com/dertuxmalwieder/SublimeTodoTxt)

Todo.txt ist [ein einfaches Textformat](http://todotxt.org/), in dem Todolisten, also Listen mit zu erledigenden Aufgaben, einfach gepflegt werden können. Der Texteditor [Sublime Text](https://www.sublimetext.com/) kann mit diesem Format normalerweise nichts anfangen, also entwickelte ich dieses Plugin, das den Umgang vereinfacht.

**Portiertes:**

BSD-Ports

Gelegentlich investiere ich ein wenig Zeit, um mich mit verschiedenen Betriebssystemen auseinanderzusetzen, etwa mit [FreeBSD](https://www.freebsd.org/). Vor einiger Zeit trug ich, ganz im Sinne des Open-Source-Gedankens, auch zur Weiterentwicklung bei; so habe ich etwa die FreeBSD-Version von Vim - siehe auch oben - Python-3-tauglich gemacht und den Dateimanager [xffm](http://www.xffm.org/) sowie den Bildbetrachter [nomacs](https://nomacs.org/) initial auf FreeBSD portiert.

[Chocolatey-Pakete](https://www.chocolatey.org/)

Ich portiere gelegentlich Software, die ich selbst gern nutzen würde, für den Windows-Paketmanager Chocolatey. Eine Liste der bisher veröffentlichten Pakete ist [auf Chocolatey.org](https://community.chocolatey.org/profiles/Cthulhux) zu finden.

C

[Vim-Builds](https://tuxproject.de/projects/vim)

Außer dem Plugin *logpad.vim*, siehe oben, biete ich seit Mai 2010, angeregt von [dieser](https://groups.google.com/d/msg/vim_dev/e2v2bO2ssAE/fE7ubEL9YVcJ) Mail des Vim-Entwicklers Bram Moolenaar, eine eigene Windows-Version des aktuellen Entwicklungszweiges des Texteditors [Vim](https://www.vim.org/) an. Diese Version wird grundlegend auf Funktionalität untersucht, das Arbeiten sollte also problemlos möglich sein.

Obwohl die Projektseite in englischer Sprache gehalten ist, so steht Vim selbst in mehreren Sprachen zur Verfügung. Die von mir zusammengestellte Version sollte auf einem deutschsprachigen Windows-System automatisch eine deutschsprachige Oberfläche erhalten.

**Weitere Webprojekte:**

PHP
JavaScript

C

**Berufliches (ohne NDA):**

PHP
JavaScript

[TranslationPad](http://www.translationpad.com/)

Für die Braunschweiger Firma [Solid Apps](http://www.solid-apps.de/) habe ich ab Ende 2013 dieses Onlinewerkzeug zur Verwaltung von App-Übersetzungen in PHP und JavaScript entwickelt.

**Ehemalige Projekte:**

Perl

[birdcries](https://code.rosaelefanten.org/birdcries)

Wenn ich Tweets weitergeben möchte, muss ich dafür darauf hoffen, dass die Empfänger bereit sind, ihre Privatsphäre runterzudrehen, denn die Twitterwebsite ist scriptüberladen. Dieser Webdienst stellt eine sehr einfache Möglichkeit zur Verfügung, ohne ein einziges externes Script Tweets lesefreundlich anzusehen.

C++

[BlogC++](https://code.rosaelefanten.org/blogcpp)

Mit dem neuen Standard *C++17* bekam C++ unter anderem endlich eigene Funktionen, um rekursiv im Dateisystem zu arbeiten. Hervorragende Voraussetzungen, um [einen weiteren](http://staticsitegenerators.net/) statischen Bloggenerator zu schreiben.

C++

[eMule beba](http://beba.emulefuture.de/)

Hierbei handelt es sich um eine von mir modifizierte Version des bekannten [eMule](https://de.wikipedia.org/wiki/EMule)\-P2P-Clients. Es wurden zahllose Verbesserungen vorgenommen, unter anderem die Quellensuche betreffend. Mit *eMule AnalyZZUL* gab es vorübergehend ein Nebenprojekt auf ZZUL-Basis, das jedoch nicht mehr weiter gepflegt wird.

MSL
Delphi

[Gamers.IRC](http://gamersirc.net/)

Gamers.IRC ist eine 2020 aus Zeitgründen eingestellte Scriptsammlung für den bekannten [IRC](https://de.wikipedia.org/wiki/IRC)\-Client [mIRC](https://de.wikipedia.org/wiki/MIRC), an deren Entwicklung ich seit der Version 4.21 beteiligt war. Ihre umfangreiche Featureliste beinhaltet unter anderem einen Queryblocker, [Bouncer](https://de.wikipedia.org/wiki/Bouncer)unterstützung und die Möglichkeit, mIRC mittels [Themes](http://mircscripts.org/archive/themes) anzupassen.

C++

[kMule](http://kmule.emulefuture.de/)

Meine Erfahrungen aus der Arbeit an eMule beba flossen auch in kMule ein, einen eMule-Fork, der zum Ziel hat, möglichst einfach und gleichzeitig vielseitig einsetzbar zu sein.

JavaScript

[OpenDownload²](http://forums.mozillazine.org/viewtopic.php?f=48&t=1003435)

Diese Erweiterung rüstet den aus anderen Browsern bekannten "Ausführen"-Knopf im Speichern-Dialog nach. Nachdem der ursprüngliche Autor offenbar nicht mehr an dieser Erweiterung arbeitet, habe ich die Weiterentwicklung für aktuelle Firefox- und SeaMonkey-Versionen übernommen.

Weitere Informationen sind der Internetseite zu entnehmen.

JavaScript

[Quick Fuck Off](https://addons.thunderbird.net/en-us/thunderbird/addon/qfo-quick-fuck-off/%5E)

Quick Fuck Off (QFO) ist eine Erweiterung für Thunderbird und SeaMonkey, die mithilfe des Dienstes [Fuck Off As A Service](https://foaas.com/) eine einfache Möglichkeit bereitstellt, einem Mailempfänger rüde sein Missfallen auszudrücken.

Racket

[reddit whisky exposé](https://www.donationcoder.com/forum/index.php?topic=46809)

Um einen Überblick über einige meiner Whiskytastings zu behalten, die ich anfangs auf reddit dokumentiert hatte, habe ich dieses Tool geschrieben, das mir aus einer entsprechend befüllten YAML-Datei eine HTML-Ansicht erstellt.

JavaScript

PHP
JavaScript

[ZenTweet](https://github.com/dertuxmalwieder/zentweet)

Twitter nervt? ZenTweet macht's richtig. Keine Mentions. Keine Direktnachrichten. Kein Hashtagspam. Nur der reine Text. Viel Spaß.

**Noch nicht umgesetzte Ideen:**

[Tabbed Plaintext](https://tuxproject.de/projects/ttxt)

"Tabbed Plaintext", "getabbter" Reintext, ist ein von mir entworfenes Dateiformat, das es erlaubt, unformatierte Textdateien in einzelne Kapitel zu unterteilen und diese in separaten Tabs darzustellen.

**Coderepositorys:**

Aus historischen, aber auch technischen Gründen ist mein eigener Code auf verschiedene Server verteilt.

1\. Ich hoste Code auf [code.rosaelefanten.org](https://code.rosaelefanten.org/).
2\. Kleinere Projekte liegen auf [Darcshub](https://hub.darcs.net/dertuxmalwieder).
3\. Gamers.IRC ist [auf SourceForge.net](https://sourceforge.net/projects/gamers-irc/).
4\. Ich trage Code zu anderen Projekten auf [GitHub](https://github.com/dertuxmalwieder) bei. Dort liegen auch Spiegel meiner anderen Projekte.

**Spenden:**

Vielleicht hat der ein oder andere von euch Gefallen an meinen Projekten gefunden und möchte mich finanziell unterstützen? Dies ist via [PayPal](https://paypal.me/GebtmireuerGeld) oder [Liberapay](https://liberapay.com/Cthulhux/donate) problemlos möglich.
Ihr könnt mir natürlich auch ein wenig Provision zukommen lassen, indem ihr auf [netcup.de](https://netcup.de/) einen [meiner Gutscheine](https://tuxproject.de/netcup.php) einlöst.
Außerdem nehme ich auch Bitcoins an - die Spendenadresse ist: 1FJngJTiBiidA2HZ81xS9FGdrQmbQe2BHY.

Wofür immer ihr euch entscheidet: Ich bedanke mich schon jetzt für jede Spende. :-)
tuxproject.de :: Scheibe Wurst dazu?

**tuxproject.de** [(warum "tuxproject"?)](https://tuxproject.de/blog/2011/09/statistiken-september-11/)
· tux: maskottchen des kernels "linux", ein wohlgenährter, glücklicher pinguin.
· project: engl. für "projekt", auch abk. f. "projection".

**Willkommen!**

Ursprünglich sollte an dieser Stelle eines Tages der Nachfolger des *Sumpfkuh Projects*, meiner Uralt-*Netzseite*, zu finden sein. So eine Internetseite als *digitale Visitenkarte* hat ja heutzutage anscheinend fast jeder, und da kann sich ein digital agierender Bürger, wie ich es bin, nur schwerlich in Zurückhaltung üben.

Tatsächlich dient *tuxproject.de*, wie der Name schon sagt, mit seiner eher zweckmäßigen Gestaltung stattdessen vor allem als Übersicht über meine gegenwärtig laufenden Codeprojekte (einige davon mit kurzer Erläuterung) und weniger als Einblick in mein Privatleben. Vielleicht findet ihr, die ihr womöglich nur versehentlich hier gelandet seid, aber auch Gefallen an einem meiner Projekte - dann lasst mir doch eine [Spende](https://tuxproject.de/#spenden) da!

Zu beachten ist, dass die folgende Liste nicht konsequent nach Aktualität sortiert ist. Es ist nicht auszuschließen, dass ich einige der unten stehenden Projekte seit Jahren nicht mehr geändert habe. Das kann sich allerdings eigentlich täglich ändern. Im Zweifel empfiehlt sich ein Blick in meine [Repositorys](https://tuxproject.de/#kontakt-impressum).

**Programmiertes:**

Common Lisp

[42links](https://42links.tuxproject.de/)

42links ist eine webbasierte Lesezeichenverwaltung mit API.

Rust

[@Kuckucksuhr](https://social.tchncs.de/@kuckucksuhr)

Eine Kuckucksuhr für Mastodon: Einmal pro Stunde gibt es einen neuen Schrei.

COBOL

[Celsius<->Fahrenheit](https://code.rosaelefanten.org/cf/)

Ein einfacher Konverter zwischen Celsius und Fahrenheit.

Go

[Clipboard URL Cleaner](https://code.rosaelefanten.org/clipurlcleaner)

Eine Desktopanwendung für Windows und macOS, die alle gekürzten Links in der Zwischenablage automatisch in ihre ursprüngliche Form umwandelt.

Go

[dateadder](https://code.rosaelefanten.org/dateadder)

Berechnet in natürlicher Sprache formulierte Datumsangaben (zum Beispiel "tomorrow in four months") auf der Konsole.

Common Lisp

[DatePrefixCopy](https://code.rosaelefanten.org/dateprefixcopy)

Kopiert Dateien unter Windows per Drag&Drop mit dem Präfix des heutigen Datums.

PHP

[Default File Manager](https://tuxproject.de/projects/phpDefaultFileManager)

Aufgrund der Eigenschaft vieler verbreiteter alternativer Dateimanager, sich standardmäßig nicht mit Windowsordnern verknüpfen zu lassen, entwickelte ich dieses PHP-Script, das entsprechende .reg-Dateien erzeugt, die den Windows-Explorer durch einen beliebigen anderen Dateimanager ersetzen.

Go

[dehexify](https://www.donationcoder.com/forum/index.php?topic=49636.0)

dehexify ist eine einfache Windowsanwendung, die hexadezimal kodierte JSON-Objekte (etwa aus der Browserkonsole) zwecks besserer Analyse in lesbaren Text umwandelt.

Go

[delout](https://code.rosaelefanten.org/delout)

Dateien löschen. Aber als Breakout-Spiel.

C

[fileweight](https://code.rosaelefanten.org/fileweight)

IBM-Forscher haben vor einer Weile ermittelt, wie viele Eisenatome auf einer durchschnittlichen Festplatte pro Bit zum Einsatz kommen. Dieses Programm berechnet auf dieser Forschungsgrundlage das ungefähre Gewicht einer Datei.

PHP

[GDPR Blocking](https://www.donationcoder.com/forum/index.php?topic=45495)

Ein möglicher Umgang mit der Mitte 2018 eingeführten EU-Datenschutzgrundverordnung besteht darin, alle EU-Einwohner von der eigenen Website auszusperren. Zum Beispiel mit diesem Code.

Pascal

[groffstudio](https://groff.tuxproject.de/)

Während ich mit dem Textsatzsystem *groff* herumspielte, fiel mir das Fehlen einer *groff*\-Alternative zu TeXstudio und anderen LaTeX-IDEs auf. Daher beschloss ich, selbst eine zu programmieren.

C

[libvldmail](https://code.rosaelefanten.org/libvldmail/)

Es scheint unmöglich zu sein, E-Mail-Adressen auf Grundlage der zahlreichen einander gelegentlich scheinbar widersprechenden RFCs zu validieren. libvldmail ist mein Versuch, eine Bibliothek zu schreiben, um dieses Unmögliche möglich zu machen.

C++

[remv](https://code.rosaelefanten.org/remv/)

Dateien umbenennen mit regulären Ausdrücken.

Go

[rssfs](https://code.rosaelefanten.org/rssfs)

Eine Desktopanwendung, mit der RSS-Feeds als Dateisysteme gemountet werden können.

Common Lisp

[rssparser.lisp](https://code.rosaelefanten.org/rssparser.lisp)

Dieser RSS-Parser erzeugt RSS-Feeds aus beliebigen Websites.

Go

[sfd](https://www.donationcoder.com/forum/index.php?topic=50051)

Der Single File (Web) Downloader lädt einzelne Seiten aus dem Web herunter und bettet dabei CSS, JavaScripts und Bilddateien direkt in die erzeugte Datei ein.

JavaScript

[The Decision Sieve](https://tuxproject.de/projects/decision-sieve)

Lange Einkaufsliste? Das Entscheidungssieb hilft!

Delphi

[Tiny Server Inventory](http://www.donationcoder.com/forum/index.php?topic=43325.0)

Da ich irgendwann beinahe den Überblick über die von mir betreuten Server und -dienste verloren hätte und Evernote dabei eher schlecht als recht zu helfen vermochte, programmierte ich diese Anwendung zur einfachen Serververwaltung. Es handelt sich im Wesentlichen um eine einfache Datenbankoberfläche, über die Server und darauf laufende Dienste mit ein paar zusätzlichen Informationen erfasst werden können.

C

[twtxtc](https://hub.darcs.net/dertuxmalwieder/twtxtc)

Ein einfacher Client für das Mikroblogsystem [twtxt](https://github.com/buckket/twtxt).

Rust

[ws2markdown](https://code.rosaelefanten.org/ws2markdown)

Konvertiert WordStar-Dateien in das Markdownformat.

Rust

[yaydl](https://crates.io/crates/yaydl)

Eine weitere, bewusst minimalistisch gehaltene Möglichkeit, Videos von YouTube (und anderen Seiten) herunterzuladen.

Rust

[zb](https://crates.io/crates/zb)

zb ist ein ZipBlog - also ein Programm, das eine komplette Website als Zip-Archiv enthalten kann. Markdown, Org und HTML werden unterstützt.

**WordPress:**

PHP
JavaScript

[MobileShare](https://www.donationcoder.com/forum/index.php?topic=47125.0)

Dieses WordPress-Plugin ist eine Implementierung des [share-APIs](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share) für mobile Geräte und erlaubt eine einfache Integration der nativen Teilen-Funktion mit WordPress.

PHP
JavaScript

[WP-PasteExtender](https://tuxproject.de/projects/wp-pasteextender)

Der WP-PasteExtender ist ein WordPress-Plugin, das kopiertem Text automatisch einen Verweis auf die Originalseite anfügt.

PHP

[WP-WahlBlackout](https://tuxproject.de/blog/2013/08/wahl-schwach-o-mat/)

Dieses WordPress-Plugin schaltet an einem einstellbaren Tag die Website bis 18 Uhr ab und blendet einen Hinweistext ein, der Besucher dazu auffordert, wählen zu gehen.

**Politischer Code:**

Go

[DKP-Beschlusssdatenbank](https://code.rosaelefanten.org/dkp-beschluesse)

Die Parteitagsbeschlüsse der DKP liegen zumeist nur im PDF-Format vor. Diese Webanwendung überträgt die PDFs (halb)automatisch in eine Datenbank und macht ihren Inhalt durchsuchbar.

Go
JavaScript

[plakateapp](https://code.rosaelefanten.org/plakateapp)

Für die Wahlkämpfe der Piratenpartei programmiertes Werkzeug, um bequem vom Smartphone (oder Desktop) aus die Position aufgehängter Plakate miteinander zu teilen.

**Browseraddons:**

JavaScript

[quick generator peek](https://chrome.google.com/webstore/detail/quick-generator-peek/mpndogblhaibianlfcpjdjhacgljabjb)

Eine Chromeerweiterung, die den "Generator" einer Website anzeigt, sofern gesetzt.

JavaScript

[UnClouder](https://addons.mozilla.org/de/firefox/addon/unclouder/)

Der UnClouder ersetzt das Marketing-Quatschwort "Cloud" auf deutsch- und englischsprachigen Websites durch "die Computer anderer Leute", um die Sicherheitsimplikationen deutlicher zu machen.

JavaScript

[Unping all the links!](https://chrome.google.com/webstore/detail/unping-all-the-links/dcjpehalmoajcikojdkmfgncbbgadkkj)

Diese Chrome-Erweiterung behebt das Problem, dass das nicht mehr abschaltbare "Hyperlink-Auditing" Sicherheit und Datenschutz [gefährdet](https://www.bleepingcomputer.com/news/security/hyperlink-auditing-pings-being-used-to-perform-ddos-attacks/).

C
JavaScript

[ymarks](https://ymarks.org/)

Eine selbst zu hostende Open-Source-Lösung zum Synchronisieren von Browserlesezeichen über mehrere Geräte hinweg.

**Weitere Plugins:**

Common Lisp

Coleslaw

Ich habe vor einiger Zeit begonnen, den Bloggenerator [Coleslaw](https://github.com/coleslaw-org/coleslaw) ein wenig zu erweitern. Beigetragen habe ich bisher Plugins zur Integration des Kommentarsystems [isso](https://github.com/posativ/isso) sowie [Matomo](https://www.matomo.org/) (früher Piwik). Inzwischen wurde ich aufgrund meiner Aktivität auch zum Projektmaintainer ernannt, womit ich wohl künftig schuld an allem sein werde. Schade.

Emacs Lisp

[logpad.el](https://code.rosaelefanten.org/logpad.el)

Im Jahr 2018 habe ich *logpad.vim* auf GNU Emacs portiert.

VimL

[logpad.vim](http://vim.sourceforge.net/scripts/script.php?script_id=2775)

Angeregt von [diesem](https://schwerdtfegr.wordpress.com/2009/08/27/eine-notepad-funkzjon-die-man-missen-lernt) Weblogeintrag entwickelte ich dieses Plugin für den Texteditor [Vim](https://www.vim.org/), das für diesen die aus dem Windows-Notepad bekannte Funktion nachrüstet, eine Logdatei zu erstellen und zu pflegen.

PHP

[OEmbed für ElkArte](https://code.rosaelefanten.org/ElkArte)

Die Forensoftware ElkArte, entstanden als Fork vom "Simple Machines Forum", kann schon eine Menge, aber noch nicht alles. Ich habe bisher ein OEmbed-Plugin für es programiert.

tmLanguage

[SublimeTodoTxt](https://github.com/dertuxmalwieder/SublimeTodoTxt)

Todo.txt ist [ein einfaches Textformat](http://todotxt.org/), in dem Todolisten, also Listen mit zu erledigenden Aufgaben, einfach gepflegt werden können. Der Texteditor [Sublime Text](https://www.sublimetext.com/) kann mit diesem Format normalerweise nichts anfangen, also entwickelte ich dieses Plugin, das den Umgang vereinfacht.

**Portiertes:**

BSD-Ports

Gelegentlich investiere ich ein wenig Zeit, um mich mit verschiedenen Betriebssystemen auseinanderzusetzen, etwa mit [FreeBSD](https://www.freebsd.org/). Vor einiger Zeit trug ich, ganz im Sinne des Open-Source-Gedankens, auch zur Weiterentwicklung bei; so habe ich etwa die FreeBSD-Version von Vim - siehe auch oben - Python-3-tauglich gemacht und den Dateimanager [xffm](http://www.xffm.org/) sowie den Bildbetrachter [nomacs](https://nomacs.org/) initial auf FreeBSD portiert.

Aktiv betreue ich derzeit [den OpenBSD-Port](https://cvsweb.openbsd.org/ports/archivers/zpaqfranz/) der freien Archivierungssoftware [zpaqfranz](https://github.com/fcorbelli/zpaqfranz/).

[Chocolatey-Pakete](https://www.chocolatey.org/)

Ich portiere gelegentlich Software, die ich selbst gern nutzen würde, für den Windows-Paketmanager Chocolatey. Eine Liste der bisher veröffentlichten Pakete ist [auf Chocolatey.org](https://community.chocolatey.org/profiles/Cthulhux) zu finden.

C

[Vim-Builds](https://tuxproject.de/projects/vim)

Außer dem Plugin *logpad.vim*, siehe oben, biete ich seit Mai 2010, angeregt von [dieser](https://groups.google.com/d/msg/vim_dev/e2v2bO2ssAE/fE7ubEL9YVcJ) Mail des Vim-Entwicklers Bram Moolenaar, eine eigene Windows-Version des aktuellen Entwicklungszweiges des Texteditors [Vim](https://www.vim.org/) an. Diese Version wird grundlegend auf Funktionalität untersucht, das Arbeiten sollte also problemlos möglich sein.

Obwohl die Projektseite in englischer Sprache gehalten ist, so steht Vim selbst in mehreren Sprachen zur Verfügung. Die von mir zusammengestellte Version sollte auf einem deutschsprachigen Windows-System automatisch eine deutschsprachige Oberfläche erhalten.

**Weitere Webprojekte:**

PHP
JavaScript

[Arch Forums Registration Helper](https://tuxproject.de/archbbs.php)

Das [Arch-Linux-Forum](https://bbs.archlinux.org/) stellt bei der Registrierung eine Frage zum Schutz gegen Bots, die nur unter Linux eine Antwort zulässt. Für Nutzer anderer Betriebssysteme habe ich dieses Script entwickelt.

C

[Why Linux is better](https://whylinuxisbetter.org/)

Ist es gar nicht. ;-)

**Berufliches (ohne NDA):**

PHP
JavaScript

[TranslationPad](http://www.translationpad.com/)

Für die Braunschweiger Firma [Solid Apps](http://www.solid-apps.de/) habe ich ab Ende 2013 dieses Onlinewerkzeug zur Verwaltung von App-Übersetzungen in PHP und JavaScript entwickelt.

**Ehemalige Projekte:**

Perl

[birdcries](https://code.rosaelefanten.org/birdcries)

Wenn ich Tweets weitergeben möchte, muss ich dafür darauf hoffen, dass die Empfänger bereit sind, ihre Privatsphäre runterzudrehen, denn die Twitterwebsite ist scriptüberladen. Dieser Webdienst stellt eine sehr einfache Möglichkeit zur Verfügung, ohne ein einziges externes Script Tweets lesefreundlich anzusehen.

C++

[BlogC++](https://code.rosaelefanten.org/blogcpp)

Mit dem neuen Standard *C++17* bekam C++ unter anderem endlich eigene Funktionen, um rekursiv im Dateisystem zu arbeiten. Hervorragende Voraussetzungen, um [einen weiteren](http://staticsitegenerators.net/) statischen Bloggenerator zu schreiben.

C++

[eMule beba](http://beba.emulefuture.de/)

Hierbei handelt es sich um eine von mir modifizierte Version des bekannten [eMule](https://de.wikipedia.org/wiki/EMule)\-P2P-Clients. Es wurden zahllose Verbesserungen vorgenommen, unter anderem die Quellensuche betreffend. Mit *eMule AnalyZZUL* gab es vorübergehend ein Nebenprojekt auf ZZUL-Basis, das jedoch nicht mehr weiter gepflegt wird.

MSL
Delphi

[Gamers.IRC](http://gamersirc.net/)

Gamers.IRC ist eine 2020 aus Zeitgründen eingestellte Scriptsammlung für den bekannten [IRC](https://de.wikipedia.org/wiki/IRC)\-Client [mIRC](https://de.wikipedia.org/wiki/MIRC), an deren Entwicklung ich seit der Version 4.21 beteiligt war. Ihre umfangreiche Featureliste beinhaltet unter anderem einen Queryblocker, [Bouncer](https://de.wikipedia.org/wiki/Bouncer)unterstützung und die Möglichkeit, mIRC mittels [Themes](http://mircscripts.org/archive/themes) anzupassen.

C++

[kMule](http://kmule.emulefuture.de/)

Meine Erfahrungen aus der Arbeit an eMule beba flossen auch in kMule ein, einen eMule-Fork, der zum Ziel hat, möglichst einfach und gleichzeitig vielseitig einsetzbar zu sein.

JavaScript

[OpenDownload²](http://forums.mozillazine.org/viewtopic.php?f=48&t=1003435)

Diese Erweiterung rüstet den aus anderen Browsern bekannten "Ausführen"-Knopf im Speichern-Dialog nach. Nachdem der ursprüngliche Autor offenbar nicht mehr an dieser Erweiterung arbeitet, habe ich die Weiterentwicklung für aktuelle Firefox- und SeaMonkey-Versionen übernommen.

Weitere Informationen sind der Internetseite zu entnehmen.

JavaScript

[Quick Fuck Off](https://addons.thunderbird.net/en-us/thunderbird/addon/qfo-quick-fuck-off/%5E)

Quick Fuck Off (QFO) ist eine Erweiterung für Thunderbird und SeaMonkey, die mithilfe des Dienstes [Fuck Off As A Service](https://foaas.com/) eine einfache Möglichkeit bereitstellt, einem Mailempfänger rüde sein Missfallen auszudrücken.

Racket

[reddit whisky exposé](https://www.donationcoder.com/forum/index.php?topic=46809)

Um einen Überblick über einige meiner Whiskytastings zu behalten, die ich anfangs auf reddit dokumentiert hatte, habe ich dieses Tool geschrieben, das mir aus einer entsprechend befüllten YAML-Datei eine HTML-Ansicht erstellt.

JavaScript

[WDE++: Das Forenhelferlein](https://www.whisky.de/forum/discussion/46331/wde-das-forenhelferlein/p1)

Ein Userscript, das das Forum von [Whisky.de](https://www.whisky.de/) um zahlreiche Funktionen, unter anderem eine Ignorierfunktion, erweitert.

PHP
JavaScript

[ZenTweet](https://github.com/dertuxmalwieder/zentweet)

Twitter nervt? ZenTweet macht's richtig. Keine Mentions. Keine Direktnachrichten. Kein Hashtagspam. Nur der reine Text. Viel Spaß.

**Noch nicht umgesetzte Ideen:**

[Tabbed Plaintext](https://tuxproject.de/projects/ttxt)

"Tabbed Plaintext", "getabbter" Reintext, ist ein von mir entworfenes Dateiformat, das es erlaubt, unformatierte Textdateien in einzelne Kapitel zu unterteilen und diese in separaten Tabs darzustellen.

**Coderepositorys:**

Aus historischen, aber auch technischen Gründen ist mein eigener Code auf verschiedene Server verteilt.

1\. Ich hoste Code auf [code.rosaelefanten.org](https://code.rosaelefanten.org/).
2\. Kleinere Projekte liegen auf [Darcshub](https://hub.darcs.net/dertuxmalwieder).
3\. Gamers.IRC ist [auf SourceForge.net](https://sourceforge.net/projects/gamers-irc/).
4\. Ich trage Code zu anderen Projekten auf [GitHub](https://github.com/dertuxmalwieder) bei. Dort liegen auch Spiegel meiner anderen Projekte.

**Spenden:**

Vielleicht hat der ein oder andere von euch Gefallen an meinen Projekten gefunden und möchte mich finanziell unterstützen? Dies ist via [PayPal](https://paypal.me/GebtmireuerGeld) oder [Liberapay](https://liberapay.com/Cthulhux/donate) problemlos möglich.
Ihr könnt mir natürlich auch ein wenig Provision zukommen lassen, indem ihr auf [netcup.de](https://netcup.de/) einen [meiner Gutscheine](https://tuxproject.de/netcup.php) einlöst.
Außerdem nehme ich auch Bitcoins an - die Spendenadresse ist: 1FJngJTiBiidA2HZ81xS9FGdrQmbQe2BHY.

Wofür immer ihr euch entscheidet: Ich bedanke mich schon jetzt für jede Spende. :-)

**Kontakt / Impressum:**

[](https://tuxproject.de/honeypot/softshoesleep.php)
[

](https://tuxproject.de/honeypot/softshoesleep.php)
[](https://tuxproject.de/honeypot/softshoesleep.php)

 Twitter: [@tux0r](https://twitter.com/tux0r)
 Mastodon: [@tux0r](https://layer8.space/@tux0r)
 Org Social: [rosaelefanten.org/social.org](https://rosaelefanten.org/social.org)
 Last.fm: [Tuxman](https://last.fm/user/Tuxman/)
 ListenBrainz: [ulkigpulkig](https://listenbrainz.org/user/ulkigpulkig/)
 Matrix: @tux0r:matrix.org
 Keyoxide: [tux0r](https://keyoxide.org/[email protected])

[Impressum](https://tuxproject.de/blog/?page_id=1979), [Datenschutzhinweise](https://tuxproject.de/blog/?page_id=2670)

このファイルをサーバーの/index.mdとしてアップロードし、AIエージェントがページのクリーンなバージョンにアクセスできるようにしましょう。Accept: text/markdownコンテンツネゴシエーションを設定して自動的に配信することもできます。

この単一ページ用に生成されたllms.txt

llms.txtをダウンロード
# tuxproject.de

> tuxproject.de (warum "tuxproject"?)
· tux: maskottchen des kernels "linux", ein wohlgenährter, glücklicher pinguin.
· project: engl. für "projekt", auch abk. f. "projection".

## Main
- [tuxproject.de :: Scheibe Wurst dazu?](https://tuxproject.de/): tuxproject.de (warum "tuxproject"?)
· tux: maskottchen des kernels "linux", ein wohlgenährter, glücklicher pinguin.
· p…
- [Micro-Site-Version](https://tuxproject.de/?linktree)

## Blog
- [Hirnfick 2.0](https://tuxproject.de/blog)

完全なllms.txtにはドメイン全体の分析が必要です(近日公開)

このファイルをドメインのルートにhttps://tuxproject.de/llms.txtとしてアップロードしてください。ChatGPT、Claude、PerplexityなどのAIエージェントはこのファイルを確認してサイト構造を理解します。

セマンティックHTML

articleまたはmain要素を使用 (100/100)

Has <main>

適切な見出し階層 (0/100)

No headings found

セマンティックHTML要素を使用 (2/100)

2 semantic elements, 293 divs (ratio: 1%)

意味のある画像alt属性 (0/100)

0/1 images with meaningful alt text

低いdivネスト深度 (100/100)

Avg div depth: 2.3, max: 4

コンテンツ効率

良好なトークン削減率 (50/100)

57% token reduction (HTML→Markdown)

良好なコンテンツ対ノイズ比 (100/100)

Content ratio: 34.1% (12182 content chars / 35733 HTML bytes)

最小限のインラインスタイル (100/100)

4/647 elements with inline styles (0.6%)

適切なページ重量 (100/100)

HTML size: 35KB

AI発見可能性

llms.txtファイルあり (0/100)

No llms.txt found

robots.txtファイルあり (100/100)

robots.txt exists

robots.txtがAIボットを許可 (67/100)

1/3 AI bots blocked: GPTBot

sitemap.xmlあり (0/100)

No sitemap found

Markdown for Agentsサポート (0/100)
&#10007; Accept: text/markdown &#10007; .md URL &#10007; <link> tag &#10007; Link header
Content-Signalあり(robots.txtまたはHTTPヘッダー) (0/100)
&#10003; robots.txt &#10003; HTTP header &#10007; Policy

構造化データ

Schema.org / JSON-LDあり (0/100)

No JSON-LD / Schema.org found

Open Graphタグあり (0/100)

0/3 OG tags present

メタディスクリプションあり (0/100)

No meta description

正規URLあり (0/100)

No canonical URL

lang属性あり (100/100)

lang="de"

アクセシビリティ

JavaScript不要でコンテンツ利用可能 (100/100)

Content available without JavaScript

適切なページサイズ (100/100)

Page size: 35KB

HTML内でコンテンツが早い位置に配置 (100/100)

Main content starts at 17% of HTML

{
  "url": "https://tuxproject.de/",
  "timestamp": 1783252718809,
  "fetch": {
    "mode": "simple",
    "timeMs": 339,
    "htmlSizeBytes": 35733,
    "supportsMarkdown": false,
    "markdownAgents": {
      "contentNegotiation": false,
      "mdUrl": {
        "found": false,
        "url": null
      },
      "linkTag": {
        "found": false,
        "url": null
      },
      "linkHeader": {
        "found": false,
        "url": null
      },
      "responseHeaders": {
        "contentSignal": null,
        "xMarkdownTokens": null,
        "vary": null
      },
      "frontmatter": {
        "present": false,
        "fields": [],
        "level": "none"
      },
      "level": "none"
    },
    "statusCode": 200
  },
  "extraction": {
    "title": "tuxproject.de :: Scheibe Wurst dazu?",
    "excerpt": "tuxproject.de (warum \"tuxproject\"?)\n· tux: maskottchen des kernels \"linux\", ein wohlgenährter, glücklicher pinguin.\n· project: engl. für \"projekt\", auch abk. f. \"projection\".",
    "byline": null,
    "siteName": null,
    "lang": "de",
    "contentLength": 12182,
    "metadata": {
      "description": null,
      "ogTitle": null,
      "ogDescription": null,
      "ogImage": null,
      "ogType": null,
      "canonical": null,
      "lang": "de",
      "schemas": [],
      "robotsMeta": "noai, noimageai",
      "author": null,
      "generator": null,
      "markdownAlternateHref": null
    }
  },
  "markdown": "**tuxproject.de** [(warum \"tuxproject\"?)](https://tuxproject.de/blog/2011/09/statistiken-september-11/)\n· tux: maskottchen des kernels \"linux\", ein wohlgenährter, glücklicher pinguin.\n· project: engl. für \"projekt\", auch abk. f. \"projection\".\n\n**Willkommen!**\n\nUrsprünglich sollte an dieser Stelle eines Tages der Nachfolger des *Sumpfkuh Projects*, meiner Uralt-*Netzseite*, zu finden sein. So eine Internetseite als *digitale Visitenkarte* hat ja heutzutage anscheinend fast jeder, und da kann sich ein digital agierender Bürger, wie ich es bin, nur schwerlich in Zurückhaltung üben.\n\nTatsächlich dient *tuxproject.de*, wie der Name schon sagt, mit seiner eher zweckmäßigen Gestaltung stattdessen vor allem als Übersicht über meine gegenwärtig laufenden Codeprojekte (einige davon mit kurzer Erläuterung) und weniger als Einblick in mein Privatleben. Vielleicht findet ihr, die ihr womöglich nur versehentlich hier gelandet seid, aber auch Gefallen an einem meiner Projekte - dann lasst mir doch eine [Spende](https://tuxproject.de/#spenden) da!\n\nZu beachten ist, dass die folgende Liste nicht konsequent nach Aktualität sortiert ist. Es ist nicht auszuschließen, dass ich einige der unten stehenden Projekte seit Jahren nicht mehr geändert habe. Das kann sich allerdings eigentlich täglich ändern. Im Zweifel empfiehlt sich ein Blick in meine [Repositorys](https://tuxproject.de/#kontakt-impressum).\n\n**Programmiertes:**\n\nCommon Lisp\n\n[42links](https://42links.tuxproject.de/)\n\n42links ist eine webbasierte Lesezeichenverwaltung mit API.\n\nRust\n\n[@Kuckucksuhr](https://social.tchncs.de/@kuckucksuhr)\n\nEine Kuckucksuhr für Mastodon: Einmal pro Stunde gibt es einen neuen Schrei.\n\nCOBOL\n\nGo\n\n[Clipboard URL Cleaner](https://code.rosaelefanten.org/clipurlcleaner)\n\nEine Desktopanwendung für Windows und macOS, die alle gekürzten Links in der Zwischenablage automatisch in ihre ursprüngliche Form umwandelt.\n\nGo\n\n[dateadder](https://code.rosaelefanten.org/dateadder)\n\nBerechnet in natürlicher Sprache formulierte Datumsangaben (zum Beispiel \"tomorrow in four months\") auf der Konsole.\n\nCommon Lisp\n\n[DatePrefixCopy](https://code.rosaelefanten.org/dateprefixcopy)\n\nKopiert Dateien unter Windows per Drag&Drop mit dem Präfix des heutigen Datums.\n\nPHP\n\n[Default File Manager](https://tuxproject.de/projects/phpDefaultFileManager)\n\nAufgrund der Eigenschaft vieler verbreiteter alternativer Dateimanager, sich standardmäßig nicht mit Windowsordnern verknüpfen zu lassen, entwickelte ich dieses PHP-Script, das entsprechende .reg-Dateien erzeugt, die den Windows-Explorer durch einen beliebigen anderen Dateimanager ersetzen.\n\nGo\n\n[dehexify](https://www.donationcoder.com/forum/index.php?topic=49636.0)\n\ndehexify ist eine einfache Windowsanwendung, die hexadezimal kodierte JSON-Objekte (etwa aus der Browserkonsole) zwecks besserer Analyse in lesbaren Text umwandelt.\n\nGo\n\n[delout](https://code.rosaelefanten.org/delout)\n\nDateien löschen. Aber als Breakout-Spiel.\n\nC\n\n[fileweight](https://code.rosaelefanten.org/fileweight)\n\nIBM-Forscher haben vor einer Weile ermittelt, wie viele Eisenatome auf einer durchschnittlichen Festplatte pro Bit zum Einsatz kommen. Dieses Programm berechnet auf dieser Forschungsgrundlage das ungefähre Gewicht einer Datei.\n\nPHP\n\n[GDPR Blocking](https://www.donationcoder.com/forum/index.php?topic=45495)\n\nEin möglicher Umgang mit der Mitte 2018 eingeführten EU-Datenschutzgrundverordnung besteht darin, alle EU-Einwohner von der eigenen Website auszusperren. Zum Beispiel mit diesem Code.\n\nPascal\n\n[groffstudio](https://groff.tuxproject.de/)\n\nWährend ich mit dem Textsatzsystem *groff* herumspielte, fiel mir das Fehlen einer *groff*\\-Alternative zu TeXstudio und anderen LaTeX-IDEs auf. Daher beschloss ich, selbst eine zu programmieren.\n\nC\n\n[libvldmail](https://code.rosaelefanten.org/libvldmail/)\n\nEs scheint unmöglich zu sein, E-Mail-Adressen auf Grundlage der zahlreichen einander gelegentlich scheinbar widersprechenden RFCs zu validieren.\n\nlibvldmail\n\nist mein Versuch, eine Bibliothek zu schreiben, um dieses Unmögliche möglich zu machen.\n\nC++\n\n[remv](https://code.rosaelefanten.org/remv/)\n\nDateien umbenennen mit regulären Ausdrücken.\n\nGo\n\n[rssfs](https://code.rosaelefanten.org/rssfs)\n\nEine Desktopanwendung, mit der RSS-Feeds als Dateisysteme gemountet werden können.\n\nCommon Lisp\n\n[rssparser.lisp](https://code.rosaelefanten.org/rssparser.lisp)\n\nDieser RSS-Parser erzeugt RSS-Feeds aus beliebigen Websites.\n\nGo\n\n[sfd](https://www.donationcoder.com/forum/index.php?topic=50051)\n\nDer Single File (Web) Downloader lädt einzelne Seiten aus dem Web herunter und bettet dabei CSS, JavaScripts und Bilddateien direkt in die erzeugte Datei ein.\n\nJavaScript\n\nDelphi\n\n[Tiny Server Inventory](http://www.donationcoder.com/forum/index.php?topic=43325.0)\n\nDa ich irgendwann beinahe den Überblick über die von mir betreuten Server und -dienste verloren hätte und Evernote dabei eher schlecht als recht zu helfen vermochte, programmierte ich diese Anwendung zur einfachen Serververwaltung. Es handelt sich im Wesentlichen um eine einfache Datenbankoberfläche, über die Server und darauf laufende Dienste mit ein paar zusätzlichen Informationen erfasst werden können.\n\nC\n\n[twtxtc](https://hub.darcs.net/dertuxmalwieder/twtxtc)\n\nEin einfacher Client für das Mikroblogsystem [twtxt](https://github.com/buckket/twtxt).\n\nRust\n\n[ws2markdown](https://code.rosaelefanten.org/ws2markdown)\n\nKonvertiert WordStar-Dateien in das Markdownformat.\n\nRust\n\n[yaydl](https://crates.io/crates/yaydl)\n\nEine weitere, bewusst minimalistisch gehaltene Möglichkeit, Videos von YouTube (und anderen Seiten) herunterzuladen.\n\nRust\n\n[zb](https://crates.io/crates/zb)\n\nzb ist ein ZipBlog - also ein Programm, das eine komplette Website als Zip-Archiv enthalten kann. Markdown, Org und HTML werden unterstützt.\n\n**WordPress:**\n\nPHP\nJavaScript\n\n[MobileShare](https://www.donationcoder.com/forum/index.php?topic=47125.0)\n\nDieses WordPress-Plugin ist eine Implementierung des [share-APIs](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share) für mobile Geräte und erlaubt eine einfache Integration der nativen Teilen-Funktion mit WordPress.\n\nPHP\nJavaScript\n\n[WP-PasteExtender](https://tuxproject.de/projects/wp-pasteextender)\n\nDer WP-PasteExtender ist ein WordPress-Plugin, das kopiertem Text automatisch einen Verweis auf die Originalseite anfügt.\n\nPHP\n\n[WP-WahlBlackout](https://tuxproject.de/blog/2013/08/wahl-schwach-o-mat/)\n\nDieses WordPress-Plugin schaltet an einem einstellbaren Tag die Website bis 18 Uhr ab und blendet einen Hinweistext ein, der Besucher dazu auffordert, wählen zu gehen.\n\n**Politischer Code:**\n\nGo\n\n[DKP-Beschlusssdatenbank](https://code.rosaelefanten.org/dkp-beschluesse)\n\nDie Parteitagsbeschlüsse der DKP liegen zumeist nur im PDF-Format vor. Diese Webanwendung überträgt die PDFs (halb)automatisch in eine Datenbank und macht ihren Inhalt durchsuchbar.\n\nGo\nJavaScript\n\n[plakateapp](https://code.rosaelefanten.org/plakateapp)\n\nFür die Wahlkämpfe der Piratenpartei programmiertes Werkzeug, um bequem vom Smartphone (oder Desktop) aus die Position aufgehängter Plakate miteinander zu teilen.\n\n**Browseraddons:**\n\nJavaScript\n\n[quick generator peek](https://chrome.google.com/webstore/detail/quick-generator-peek/mpndogblhaibianlfcpjdjhacgljabjb)\n\nEine Chromeerweiterung, die den \"Generator\" einer Website anzeigt, sofern gesetzt.\n\nJavaScript\n\n[UnClouder](https://addons.mozilla.org/de/firefox/addon/unclouder/)\n\nDer UnClouder ersetzt das Marketing-Quatschwort \"Cloud\" auf deutsch- und englischsprachigen Websites durch \"die Computer anderer Leute\", um die Sicherheitsimplikationen deutlicher zu machen.\n\nJavaScript\n\n[Unping all the links!](https://chrome.google.com/webstore/detail/unping-all-the-links/dcjpehalmoajcikojdkmfgncbbgadkkj)\n\nDiese Chrome-Erweiterung behebt das Problem, dass das nicht mehr abschaltbare \"Hyperlink-Auditing\" Sicherheit und Datenschutz [gefährdet](https://www.bleepingcomputer.com/news/security/hyperlink-auditing-pings-being-used-to-perform-ddos-attacks/).\n\nC\nJavaScript\n\n[ymarks](https://ymarks.org/)\n\nEine selbst zu hostende Open-Source-Lösung zum Synchronisieren von Browserlesezeichen über mehrere Geräte hinweg.\n\n**Weitere Plugins:**\n\nCommon Lisp\n\nColeslaw\n\nIch habe vor einiger Zeit begonnen, den Bloggenerator [Coleslaw](https://github.com/coleslaw-org/coleslaw) ein wenig zu erweitern. Beigetragen habe ich bisher Plugins zur Integration des Kommentarsystems [isso](https://github.com/posativ/isso) sowie [Matomo](https://www.matomo.org/) (früher Piwik). Inzwischen wurde ich aufgrund meiner Aktivität auch zum Projektmaintainer ernannt, womit ich wohl künftig schuld an allem sein werde. Schade.\n\nEmacs Lisp\n\n[logpad.el](https://code.rosaelefanten.org/logpad.el)\n\nIm Jahr 2018 habe ich *logpad.vim* auf GNU Emacs portiert.\n\nVimL\n\n[logpad.vim](http://vim.sourceforge.net/scripts/script.php?script_id=2775)\n\nAngeregt von [diesem](https://schwerdtfegr.wordpress.com/2009/08/27/eine-notepad-funkzjon-die-man-missen-lernt) Weblogeintrag entwickelte ich dieses Plugin für den Texteditor [Vim](https://www.vim.org/), das für diesen die aus dem Windows-Notepad bekannte Funktion nachrüstet, eine Logdatei zu erstellen und zu pflegen.\n\nPHP\n\n[OEmbed für ElkArte](https://code.rosaelefanten.org/ElkArte)\n\nDie Forensoftware ElkArte, entstanden als Fork vom \"Simple Machines Forum\", kann schon eine Menge, aber noch nicht alles. Ich habe bisher ein OEmbed-Plugin für es programiert.\n\ntmLanguage\n\n[SublimeTodoTxt](https://github.com/dertuxmalwieder/SublimeTodoTxt)\n\nTodo.txt ist [ein einfaches Textformat](http://todotxt.org/), in dem Todolisten, also Listen mit zu erledigenden Aufgaben, einfach gepflegt werden können. Der Texteditor [Sublime Text](https://www.sublimetext.com/) kann mit diesem Format normalerweise nichts anfangen, also entwickelte ich dieses Plugin, das den Umgang vereinfacht.\n\n**Portiertes:**\n\nBSD-Ports\n\nGelegentlich investiere ich ein wenig Zeit, um mich mit verschiedenen Betriebssystemen auseinanderzusetzen, etwa mit [FreeBSD](https://www.freebsd.org/). Vor einiger Zeit trug ich, ganz im Sinne des Open-Source-Gedankens, auch zur Weiterentwicklung bei; so habe ich etwa die FreeBSD-Version von Vim - siehe auch oben - Python-3-tauglich gemacht und den Dateimanager [xffm](http://www.xffm.org/) sowie den Bildbetrachter [nomacs](https://nomacs.org/) initial auf FreeBSD portiert.\n\n[Chocolatey-Pakete](https://www.chocolatey.org/)\n\nIch portiere gelegentlich Software, die ich selbst gern nutzen würde, für den Windows-Paketmanager Chocolatey. Eine Liste der bisher veröffentlichten Pakete ist [auf Chocolatey.org](https://community.chocolatey.org/profiles/Cthulhux) zu finden.\n\nC\n\n[Vim-Builds](https://tuxproject.de/projects/vim)\n\nAußer dem Plugin *logpad.vim*, siehe oben, biete ich seit Mai 2010, angeregt von [dieser](https://groups.google.com/d/msg/vim_dev/e2v2bO2ssAE/fE7ubEL9YVcJ) Mail des Vim-Entwicklers Bram Moolenaar, eine eigene Windows-Version des aktuellen Entwicklungszweiges des Texteditors [Vim](https://www.vim.org/) an. Diese Version wird grundlegend auf Funktionalität untersucht, das Arbeiten sollte also problemlos möglich sein.\n\nObwohl die Projektseite in englischer Sprache gehalten ist, so steht Vim selbst in mehreren Sprachen zur Verfügung. Die von mir zusammengestellte Version sollte auf einem deutschsprachigen Windows-System automatisch eine deutschsprachige Oberfläche erhalten.\n\n**Weitere Webprojekte:**\n\nPHP\nJavaScript\n\nC\n\n**Berufliches (ohne NDA):**\n\nPHP\nJavaScript\n\n[TranslationPad](http://www.translationpad.com/)\n\nFür die Braunschweiger Firma [Solid Apps](http://www.solid-apps.de/) habe ich ab Ende 2013 dieses Onlinewerkzeug zur Verwaltung von App-Übersetzungen in PHP und JavaScript entwickelt.\n\n**Ehemalige Projekte:**\n\nPerl\n\n[birdcries](https://code.rosaelefanten.org/birdcries)\n\nWenn ich Tweets weitergeben möchte, muss ich dafür darauf hoffen, dass die Empfänger bereit sind, ihre Privatsphäre runterzudrehen, denn die Twitterwebsite ist scriptüberladen. Dieser Webdienst stellt eine sehr einfache Möglichkeit zur Verfügung, ohne ein einziges externes Script Tweets lesefreundlich anzusehen.\n\nC++\n\n[BlogC++](https://code.rosaelefanten.org/blogcpp)\n\nMit dem neuen Standard *C++17* bekam C++ unter anderem endlich eigene Funktionen, um rekursiv im Dateisystem zu arbeiten. Hervorragende Voraussetzungen, um [einen weiteren](http://staticsitegenerators.net/) statischen Bloggenerator zu schreiben.\n\nC++\n\n[eMule beba](http://beba.emulefuture.de/)\n\nHierbei handelt es sich um eine von mir modifizierte Version des bekannten [eMule](https://de.wikipedia.org/wiki/EMule)\\-P2P-Clients. Es wurden zahllose Verbesserungen vorgenommen, unter anderem die Quellensuche betreffend. Mit *eMule AnalyZZUL* gab es vorübergehend ein Nebenprojekt auf ZZUL-Basis, das jedoch nicht mehr weiter gepflegt wird.\n\nMSL\nDelphi\n\n[Gamers.IRC](http://gamersirc.net/)\n\nGamers.IRC ist eine 2020 aus Zeitgründen eingestellte Scriptsammlung für den bekannten [IRC](https://de.wikipedia.org/wiki/IRC)\\-Client [mIRC](https://de.wikipedia.org/wiki/MIRC), an deren Entwicklung ich seit der Version 4.21 beteiligt war. Ihre umfangreiche Featureliste beinhaltet unter anderem einen Queryblocker, [Bouncer](https://de.wikipedia.org/wiki/Bouncer)unterstützung und die Möglichkeit, mIRC mittels [Themes](http://mircscripts.org/archive/themes) anzupassen.\n\nC++\n\n[kMule](http://kmule.emulefuture.de/)\n\nMeine Erfahrungen aus der Arbeit an eMule beba flossen auch in kMule ein, einen eMule-Fork, der zum Ziel hat, möglichst einfach und gleichzeitig vielseitig einsetzbar zu sein.\n\nJavaScript\n\n[OpenDownload²](http://forums.mozillazine.org/viewtopic.php?f=48&t=1003435)\n\nDiese Erweiterung rüstet den aus anderen Browsern bekannten \"Ausführen\"-Knopf im Speichern-Dialog nach. Nachdem der ursprüngliche Autor offenbar nicht mehr an dieser Erweiterung arbeitet, habe ich die Weiterentwicklung für aktuelle Firefox- und SeaMonkey-Versionen übernommen.\n\nWeitere Informationen sind der Internetseite zu entnehmen.\n\nJavaScript\n\n[Quick Fuck Off](https://addons.thunderbird.net/en-us/thunderbird/addon/qfo-quick-fuck-off/%5E)\n\nQuick Fuck Off (QFO) ist eine Erweiterung für Thunderbird und SeaMonkey, die mithilfe des Dienstes [Fuck Off As A Service](https://foaas.com/) eine einfache Möglichkeit bereitstellt, einem Mailempfänger rüde sein Missfallen auszudrücken.\n\nRacket\n\n[reddit whisky exposé](https://www.donationcoder.com/forum/index.php?topic=46809)\n\nUm einen Überblick über einige meiner Whiskytastings zu behalten, die ich anfangs auf reddit dokumentiert hatte, habe ich dieses Tool geschrieben, das mir aus einer entsprechend befüllten YAML-Datei eine HTML-Ansicht erstellt.\n\nJavaScript\n\nPHP\nJavaScript\n\n[ZenTweet](https://github.com/dertuxmalwieder/zentweet)\n\nTwitter nervt? ZenTweet macht's richtig. Keine Mentions. Keine Direktnachrichten. Kein Hashtagspam. Nur der reine Text. Viel Spaß.\n\n**Noch nicht umgesetzte Ideen:**\n\n[Tabbed Plaintext](https://tuxproject.de/projects/ttxt)\n\n\"Tabbed Plaintext\", \"getabbter\" Reintext, ist ein von mir entworfenes Dateiformat, das es erlaubt, unformatierte Textdateien in einzelne Kapitel zu unterteilen und diese in separaten Tabs darzustellen.\n\n**Coderepositorys:**\n\nAus historischen, aber auch technischen Gründen ist mein eigener Code auf verschiedene Server verteilt.\n\n1\\. Ich hoste Code auf [code.rosaelefanten.org](https://code.rosaelefanten.org/).\n2\\. Kleinere Projekte liegen auf [Darcshub](https://hub.darcs.net/dertuxmalwieder).\n3\\. Gamers.IRC ist [auf SourceForge.net](https://sourceforge.net/projects/gamers-irc/).\n4\\. Ich trage Code zu anderen Projekten auf [GitHub](https://github.com/dertuxmalwieder) bei. Dort liegen auch Spiegel meiner anderen Projekte.\n\n**Spenden:**\n\nVielleicht hat der ein oder andere von euch Gefallen an meinen Projekten gefunden und möchte mich finanziell unterstützen? Dies ist via [PayPal](https://paypal.me/GebtmireuerGeld) oder [Liberapay](https://liberapay.com/Cthulhux/donate) problemlos möglich.\nIhr könnt mir natürlich auch ein wenig Provision zukommen lassen, indem ihr auf [netcup.de](https://netcup.de/) einen [meiner Gutscheine](https://tuxproject.de/netcup.php) einlöst.\nAußerdem nehme ich auch Bitcoins an - die Spendenadresse ist: 1FJngJTiBiidA2HZ81xS9FGdrQmbQe2BHY.\n\nWofür immer ihr euch entscheidet: Ich bedanke mich schon jetzt für jede Spende. :-)\n",
  "fullPageMarkdown": "tuxproject.de :: Scheibe Wurst dazu?\n\n**tuxproject.de** [(warum \"tuxproject\"?)](https://tuxproject.de/blog/2011/09/statistiken-september-11/)\n· tux: maskottchen des kernels \"linux\", ein wohlgenährter, glücklicher pinguin.\n· project: engl. für \"projekt\", auch abk. f. \"projection\".\n\n**Willkommen!**\n\nUrsprünglich sollte an dieser Stelle eines Tages der Nachfolger des *Sumpfkuh Projects*, meiner Uralt-*Netzseite*, zu finden sein. So eine Internetseite als *digitale Visitenkarte* hat ja heutzutage anscheinend fast jeder, und da kann sich ein digital agierender Bürger, wie ich es bin, nur schwerlich in Zurückhaltung üben.\n\nTatsächlich dient *tuxproject.de*, wie der Name schon sagt, mit seiner eher zweckmäßigen Gestaltung stattdessen vor allem als Übersicht über meine gegenwärtig laufenden Codeprojekte (einige davon mit kurzer Erläuterung) und weniger als Einblick in mein Privatleben. Vielleicht findet ihr, die ihr womöglich nur versehentlich hier gelandet seid, aber auch Gefallen an einem meiner Projekte - dann lasst mir doch eine [Spende](https://tuxproject.de/#spenden) da!\n\nZu beachten ist, dass die folgende Liste nicht konsequent nach Aktualität sortiert ist. Es ist nicht auszuschließen, dass ich einige der unten stehenden Projekte seit Jahren nicht mehr geändert habe. Das kann sich allerdings eigentlich täglich ändern. Im Zweifel empfiehlt sich ein Blick in meine [Repositorys](https://tuxproject.de/#kontakt-impressum).\n\n**Programmiertes:**\n\nCommon Lisp\n\n[42links](https://42links.tuxproject.de/)\n\n42links ist eine webbasierte Lesezeichenverwaltung mit API.\n\nRust\n\n[@Kuckucksuhr](https://social.tchncs.de/@kuckucksuhr)\n\nEine Kuckucksuhr für Mastodon: Einmal pro Stunde gibt es einen neuen Schrei.\n\nCOBOL\n\n[Celsius<->Fahrenheit](https://code.rosaelefanten.org/cf/)\n\nEin einfacher Konverter zwischen Celsius und Fahrenheit.\n\nGo\n\n[Clipboard URL Cleaner](https://code.rosaelefanten.org/clipurlcleaner)\n\nEine Desktopanwendung für Windows und macOS, die alle gekürzten Links in der Zwischenablage automatisch in ihre ursprüngliche Form umwandelt.\n\nGo\n\n[dateadder](https://code.rosaelefanten.org/dateadder)\n\nBerechnet in natürlicher Sprache formulierte Datumsangaben (zum Beispiel \"tomorrow in four months\") auf der Konsole.\n\nCommon Lisp\n\n[DatePrefixCopy](https://code.rosaelefanten.org/dateprefixcopy)\n\nKopiert Dateien unter Windows per Drag&Drop mit dem Präfix des heutigen Datums.\n\nPHP\n\n[Default File Manager](https://tuxproject.de/projects/phpDefaultFileManager)\n\nAufgrund der Eigenschaft vieler verbreiteter alternativer Dateimanager, sich standardmäßig nicht mit Windowsordnern verknüpfen zu lassen, entwickelte ich dieses PHP-Script, das entsprechende .reg-Dateien erzeugt, die den Windows-Explorer durch einen beliebigen anderen Dateimanager ersetzen.\n\nGo\n\n[dehexify](https://www.donationcoder.com/forum/index.php?topic=49636.0)\n\ndehexify ist eine einfache Windowsanwendung, die hexadezimal kodierte JSON-Objekte (etwa aus der Browserkonsole) zwecks besserer Analyse in lesbaren Text umwandelt.\n\nGo\n\n[delout](https://code.rosaelefanten.org/delout)\n\nDateien löschen. Aber als Breakout-Spiel.\n\nC\n\n[fileweight](https://code.rosaelefanten.org/fileweight)\n\nIBM-Forscher haben vor einer Weile ermittelt, wie viele Eisenatome auf einer durchschnittlichen Festplatte pro Bit zum Einsatz kommen. Dieses Programm berechnet auf dieser Forschungsgrundlage das ungefähre Gewicht einer Datei.\n\nPHP\n\n[GDPR Blocking](https://www.donationcoder.com/forum/index.php?topic=45495)\n\nEin möglicher Umgang mit der Mitte 2018 eingeführten EU-Datenschutzgrundverordnung besteht darin, alle EU-Einwohner von der eigenen Website auszusperren. Zum Beispiel mit diesem Code.\n\nPascal\n\n[groffstudio](https://groff.tuxproject.de/)\n\nWährend ich mit dem Textsatzsystem *groff* herumspielte, fiel mir das Fehlen einer *groff*\\-Alternative zu TeXstudio und anderen LaTeX-IDEs auf. Daher beschloss ich, selbst eine zu programmieren.\n\nC\n\n[libvldmail](https://code.rosaelefanten.org/libvldmail/)\n\nEs scheint unmöglich zu sein, E-Mail-Adressen auf Grundlage der zahlreichen einander gelegentlich scheinbar widersprechenden RFCs zu validieren. libvldmail ist mein Versuch, eine Bibliothek zu schreiben, um dieses Unmögliche möglich zu machen.\n\nC++\n\n[remv](https://code.rosaelefanten.org/remv/)\n\nDateien umbenennen mit regulären Ausdrücken.\n\nGo\n\n[rssfs](https://code.rosaelefanten.org/rssfs)\n\nEine Desktopanwendung, mit der RSS-Feeds als Dateisysteme gemountet werden können.\n\nCommon Lisp\n\n[rssparser.lisp](https://code.rosaelefanten.org/rssparser.lisp)\n\nDieser RSS-Parser erzeugt RSS-Feeds aus beliebigen Websites.\n\nGo\n\n[sfd](https://www.donationcoder.com/forum/index.php?topic=50051)\n\nDer Single File (Web) Downloader lädt einzelne Seiten aus dem Web herunter und bettet dabei CSS, JavaScripts und Bilddateien direkt in die erzeugte Datei ein.\n\nJavaScript\n\n[The Decision Sieve](https://tuxproject.de/projects/decision-sieve)\n\nLange Einkaufsliste? Das Entscheidungssieb hilft!\n\nDelphi\n\n[Tiny Server Inventory](http://www.donationcoder.com/forum/index.php?topic=43325.0)\n\nDa ich irgendwann beinahe den Überblick über die von mir betreuten Server und -dienste verloren hätte und Evernote dabei eher schlecht als recht zu helfen vermochte, programmierte ich diese Anwendung zur einfachen Serververwaltung. Es handelt sich im Wesentlichen um eine einfache Datenbankoberfläche, über die Server und darauf laufende Dienste mit ein paar zusätzlichen Informationen erfasst werden können.\n\nC\n\n[twtxtc](https://hub.darcs.net/dertuxmalwieder/twtxtc)\n\nEin einfacher Client für das Mikroblogsystem [twtxt](https://github.com/buckket/twtxt).\n\nRust\n\n[ws2markdown](https://code.rosaelefanten.org/ws2markdown)\n\nKonvertiert WordStar-Dateien in das Markdownformat.\n\nRust\n\n[yaydl](https://crates.io/crates/yaydl)\n\nEine weitere, bewusst minimalistisch gehaltene Möglichkeit, Videos von YouTube (und anderen Seiten) herunterzuladen.\n\nRust\n\n[zb](https://crates.io/crates/zb)\n\nzb ist ein ZipBlog - also ein Programm, das eine komplette Website als Zip-Archiv enthalten kann. Markdown, Org und HTML werden unterstützt.\n\n**WordPress:**\n\nPHP\nJavaScript\n\n[MobileShare](https://www.donationcoder.com/forum/index.php?topic=47125.0)\n\nDieses WordPress-Plugin ist eine Implementierung des [share-APIs](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share) für mobile Geräte und erlaubt eine einfache Integration der nativen Teilen-Funktion mit WordPress.\n\nPHP\nJavaScript\n\n[WP-PasteExtender](https://tuxproject.de/projects/wp-pasteextender)\n\nDer WP-PasteExtender ist ein WordPress-Plugin, das kopiertem Text automatisch einen Verweis auf die Originalseite anfügt.\n\nPHP\n\n[WP-WahlBlackout](https://tuxproject.de/blog/2013/08/wahl-schwach-o-mat/)\n\nDieses WordPress-Plugin schaltet an einem einstellbaren Tag die Website bis 18 Uhr ab und blendet einen Hinweistext ein, der Besucher dazu auffordert, wählen zu gehen.\n\n**Politischer Code:**\n\nGo\n\n[DKP-Beschlusssdatenbank](https://code.rosaelefanten.org/dkp-beschluesse)\n\nDie Parteitagsbeschlüsse der DKP liegen zumeist nur im PDF-Format vor. Diese Webanwendung überträgt die PDFs (halb)automatisch in eine Datenbank und macht ihren Inhalt durchsuchbar.\n\nGo\nJavaScript\n\n[plakateapp](https://code.rosaelefanten.org/plakateapp)\n\nFür die Wahlkämpfe der Piratenpartei programmiertes Werkzeug, um bequem vom Smartphone (oder Desktop) aus die Position aufgehängter Plakate miteinander zu teilen.\n\n**Browseraddons:**\n\nJavaScript\n\n[quick generator peek](https://chrome.google.com/webstore/detail/quick-generator-peek/mpndogblhaibianlfcpjdjhacgljabjb)\n\nEine Chromeerweiterung, die den \"Generator\" einer Website anzeigt, sofern gesetzt.\n\nJavaScript\n\n[UnClouder](https://addons.mozilla.org/de/firefox/addon/unclouder/)\n\nDer UnClouder ersetzt das Marketing-Quatschwort \"Cloud\" auf deutsch- und englischsprachigen Websites durch \"die Computer anderer Leute\", um die Sicherheitsimplikationen deutlicher zu machen.\n\nJavaScript\n\n[Unping all the links!](https://chrome.google.com/webstore/detail/unping-all-the-links/dcjpehalmoajcikojdkmfgncbbgadkkj)\n\nDiese Chrome-Erweiterung behebt das Problem, dass das nicht mehr abschaltbare \"Hyperlink-Auditing\" Sicherheit und Datenschutz [gefährdet](https://www.bleepingcomputer.com/news/security/hyperlink-auditing-pings-being-used-to-perform-ddos-attacks/).\n\nC\nJavaScript\n\n[ymarks](https://ymarks.org/)\n\nEine selbst zu hostende Open-Source-Lösung zum Synchronisieren von Browserlesezeichen über mehrere Geräte hinweg.\n\n**Weitere Plugins:**\n\nCommon Lisp\n\nColeslaw\n\nIch habe vor einiger Zeit begonnen, den Bloggenerator [Coleslaw](https://github.com/coleslaw-org/coleslaw) ein wenig zu erweitern. Beigetragen habe ich bisher Plugins zur Integration des Kommentarsystems [isso](https://github.com/posativ/isso) sowie [Matomo](https://www.matomo.org/) (früher Piwik). Inzwischen wurde ich aufgrund meiner Aktivität auch zum Projektmaintainer ernannt, womit ich wohl künftig schuld an allem sein werde. Schade.\n\nEmacs Lisp\n\n[logpad.el](https://code.rosaelefanten.org/logpad.el)\n\nIm Jahr 2018 habe ich *logpad.vim* auf GNU Emacs portiert.\n\nVimL\n\n[logpad.vim](http://vim.sourceforge.net/scripts/script.php?script_id=2775)\n\nAngeregt von [diesem](https://schwerdtfegr.wordpress.com/2009/08/27/eine-notepad-funkzjon-die-man-missen-lernt) Weblogeintrag entwickelte ich dieses Plugin für den Texteditor [Vim](https://www.vim.org/), das für diesen die aus dem Windows-Notepad bekannte Funktion nachrüstet, eine Logdatei zu erstellen und zu pflegen.\n\nPHP\n\n[OEmbed für ElkArte](https://code.rosaelefanten.org/ElkArte)\n\nDie Forensoftware ElkArte, entstanden als Fork vom \"Simple Machines Forum\", kann schon eine Menge, aber noch nicht alles. Ich habe bisher ein OEmbed-Plugin für es programiert.\n\ntmLanguage\n\n[SublimeTodoTxt](https://github.com/dertuxmalwieder/SublimeTodoTxt)\n\nTodo.txt ist [ein einfaches Textformat](http://todotxt.org/), in dem Todolisten, also Listen mit zu erledigenden Aufgaben, einfach gepflegt werden können. Der Texteditor [Sublime Text](https://www.sublimetext.com/) kann mit diesem Format normalerweise nichts anfangen, also entwickelte ich dieses Plugin, das den Umgang vereinfacht.\n\n**Portiertes:**\n\nBSD-Ports\n\nGelegentlich investiere ich ein wenig Zeit, um mich mit verschiedenen Betriebssystemen auseinanderzusetzen, etwa mit [FreeBSD](https://www.freebsd.org/). Vor einiger Zeit trug ich, ganz im Sinne des Open-Source-Gedankens, auch zur Weiterentwicklung bei; so habe ich etwa die FreeBSD-Version von Vim - siehe auch oben - Python-3-tauglich gemacht und den Dateimanager [xffm](http://www.xffm.org/) sowie den Bildbetrachter [nomacs](https://nomacs.org/) initial auf FreeBSD portiert.\n\nAktiv betreue ich derzeit [den OpenBSD-Port](https://cvsweb.openbsd.org/ports/archivers/zpaqfranz/) der freien Archivierungssoftware [zpaqfranz](https://github.com/fcorbelli/zpaqfranz/).\n\n[Chocolatey-Pakete](https://www.chocolatey.org/)\n\nIch portiere gelegentlich Software, die ich selbst gern nutzen würde, für den Windows-Paketmanager Chocolatey. Eine Liste der bisher veröffentlichten Pakete ist [auf Chocolatey.org](https://community.chocolatey.org/profiles/Cthulhux) zu finden.\n\nC\n\n[Vim-Builds](https://tuxproject.de/projects/vim)\n\nAußer dem Plugin *logpad.vim*, siehe oben, biete ich seit Mai 2010, angeregt von [dieser](https://groups.google.com/d/msg/vim_dev/e2v2bO2ssAE/fE7ubEL9YVcJ) Mail des Vim-Entwicklers Bram Moolenaar, eine eigene Windows-Version des aktuellen Entwicklungszweiges des Texteditors [Vim](https://www.vim.org/) an. Diese Version wird grundlegend auf Funktionalität untersucht, das Arbeiten sollte also problemlos möglich sein.\n\nObwohl die Projektseite in englischer Sprache gehalten ist, so steht Vim selbst in mehreren Sprachen zur Verfügung. Die von mir zusammengestellte Version sollte auf einem deutschsprachigen Windows-System automatisch eine deutschsprachige Oberfläche erhalten.\n\n**Weitere Webprojekte:**\n\nPHP\nJavaScript\n\n[Arch Forums Registration Helper](https://tuxproject.de/archbbs.php)\n\nDas [Arch-Linux-Forum](https://bbs.archlinux.org/) stellt bei der Registrierung eine Frage zum Schutz gegen Bots, die nur unter Linux eine Antwort zulässt. Für Nutzer anderer Betriebssysteme habe ich dieses Script entwickelt.\n\nC\n\n[Why Linux is better](https://whylinuxisbetter.org/)\n\nIst es gar nicht. ;-)\n\n**Berufliches (ohne NDA):**\n\nPHP\nJavaScript\n\n[TranslationPad](http://www.translationpad.com/)\n\nFür die Braunschweiger Firma [Solid Apps](http://www.solid-apps.de/) habe ich ab Ende 2013 dieses Onlinewerkzeug zur Verwaltung von App-Übersetzungen in PHP und JavaScript entwickelt.\n\n**Ehemalige Projekte:**\n\nPerl\n\n[birdcries](https://code.rosaelefanten.org/birdcries)\n\nWenn ich Tweets weitergeben möchte, muss ich dafür darauf hoffen, dass die Empfänger bereit sind, ihre Privatsphäre runterzudrehen, denn die Twitterwebsite ist scriptüberladen. Dieser Webdienst stellt eine sehr einfache Möglichkeit zur Verfügung, ohne ein einziges externes Script Tweets lesefreundlich anzusehen.\n\nC++\n\n[BlogC++](https://code.rosaelefanten.org/blogcpp)\n\nMit dem neuen Standard *C++17* bekam C++ unter anderem endlich eigene Funktionen, um rekursiv im Dateisystem zu arbeiten. Hervorragende Voraussetzungen, um [einen weiteren](http://staticsitegenerators.net/) statischen Bloggenerator zu schreiben.\n\nC++\n\n[eMule beba](http://beba.emulefuture.de/)\n\nHierbei handelt es sich um eine von mir modifizierte Version des bekannten [eMule](https://de.wikipedia.org/wiki/EMule)\\-P2P-Clients. Es wurden zahllose Verbesserungen vorgenommen, unter anderem die Quellensuche betreffend. Mit *eMule AnalyZZUL* gab es vorübergehend ein Nebenprojekt auf ZZUL-Basis, das jedoch nicht mehr weiter gepflegt wird.\n\nMSL\nDelphi\n\n[Gamers.IRC](http://gamersirc.net/)\n\nGamers.IRC ist eine 2020 aus Zeitgründen eingestellte Scriptsammlung für den bekannten [IRC](https://de.wikipedia.org/wiki/IRC)\\-Client [mIRC](https://de.wikipedia.org/wiki/MIRC), an deren Entwicklung ich seit der Version 4.21 beteiligt war. Ihre umfangreiche Featureliste beinhaltet unter anderem einen Queryblocker, [Bouncer](https://de.wikipedia.org/wiki/Bouncer)unterstützung und die Möglichkeit, mIRC mittels [Themes](http://mircscripts.org/archive/themes) anzupassen.\n\nC++\n\n[kMule](http://kmule.emulefuture.de/)\n\nMeine Erfahrungen aus der Arbeit an eMule beba flossen auch in kMule ein, einen eMule-Fork, der zum Ziel hat, möglichst einfach und gleichzeitig vielseitig einsetzbar zu sein.\n\nJavaScript\n\n[OpenDownload²](http://forums.mozillazine.org/viewtopic.php?f=48&t=1003435)\n\nDiese Erweiterung rüstet den aus anderen Browsern bekannten \"Ausführen\"-Knopf im Speichern-Dialog nach. Nachdem der ursprüngliche Autor offenbar nicht mehr an dieser Erweiterung arbeitet, habe ich die Weiterentwicklung für aktuelle Firefox- und SeaMonkey-Versionen übernommen.\n\nWeitere Informationen sind der Internetseite zu entnehmen.\n\nJavaScript\n\n[Quick Fuck Off](https://addons.thunderbird.net/en-us/thunderbird/addon/qfo-quick-fuck-off/%5E)\n\nQuick Fuck Off (QFO) ist eine Erweiterung für Thunderbird und SeaMonkey, die mithilfe des Dienstes [Fuck Off As A Service](https://foaas.com/) eine einfache Möglichkeit bereitstellt, einem Mailempfänger rüde sein Missfallen auszudrücken.\n\nRacket\n\n[reddit whisky exposé](https://www.donationcoder.com/forum/index.php?topic=46809)\n\nUm einen Überblick über einige meiner Whiskytastings zu behalten, die ich anfangs auf reddit dokumentiert hatte, habe ich dieses Tool geschrieben, das mir aus einer entsprechend befüllten YAML-Datei eine HTML-Ansicht erstellt.\n\nJavaScript\n\n[WDE++: Das Forenhelferlein](https://www.whisky.de/forum/discussion/46331/wde-das-forenhelferlein/p1)\n\nEin Userscript, das das Forum von [Whisky.de](https://www.whisky.de/) um zahlreiche Funktionen, unter anderem eine Ignorierfunktion, erweitert.\n\nPHP\nJavaScript\n\n[ZenTweet](https://github.com/dertuxmalwieder/zentweet)\n\nTwitter nervt? ZenTweet macht's richtig. Keine Mentions. Keine Direktnachrichten. Kein Hashtagspam. Nur der reine Text. Viel Spaß.\n\n**Noch nicht umgesetzte Ideen:**\n\n[Tabbed Plaintext](https://tuxproject.de/projects/ttxt)\n\n\"Tabbed Plaintext\", \"getabbter\" Reintext, ist ein von mir entworfenes Dateiformat, das es erlaubt, unformatierte Textdateien in einzelne Kapitel zu unterteilen und diese in separaten Tabs darzustellen.\n\n**Coderepositorys:**\n\nAus historischen, aber auch technischen Gründen ist mein eigener Code auf verschiedene Server verteilt.\n\n1\\. Ich hoste Code auf [code.rosaelefanten.org](https://code.rosaelefanten.org/).\n2\\. Kleinere Projekte liegen auf [Darcshub](https://hub.darcs.net/dertuxmalwieder).\n3\\. Gamers.IRC ist [auf SourceForge.net](https://sourceforge.net/projects/gamers-irc/).\n4\\. Ich trage Code zu anderen Projekten auf [GitHub](https://github.com/dertuxmalwieder) bei. Dort liegen auch Spiegel meiner anderen Projekte.\n\n**Spenden:**\n\nVielleicht hat der ein oder andere von euch Gefallen an meinen Projekten gefunden und möchte mich finanziell unterstützen? Dies ist via [PayPal](https://paypal.me/GebtmireuerGeld) oder [Liberapay](https://liberapay.com/Cthulhux/donate) problemlos möglich.\nIhr könnt mir natürlich auch ein wenig Provision zukommen lassen, indem ihr auf [netcup.de](https://netcup.de/) einen [meiner Gutscheine](https://tuxproject.de/netcup.php) einlöst.\nAußerdem nehme ich auch Bitcoins an - die Spendenadresse ist: 1FJngJTiBiidA2HZ81xS9FGdrQmbQe2BHY.\n\nWofür immer ihr euch entscheidet: Ich bedanke mich schon jetzt für jede Spende. :-)\n\n**Kontakt / Impressum:**\n\n[](https://tuxproject.de/honeypot/softshoesleep.php)\n[\n\n](https://tuxproject.de/honeypot/softshoesleep.php)\n[](https://tuxproject.de/honeypot/softshoesleep.php)\n\n Twitter: [@tux0r](https://twitter.com/tux0r)\n Mastodon: [@tux0r](https://layer8.space/@tux0r)\n Org Social: [rosaelefanten.org/social.org](https://rosaelefanten.org/social.org)\n Last.fm: [Tuxman](https://last.fm/user/Tuxman/)\n ListenBrainz: [ulkigpulkig](https://listenbrainz.org/user/ulkigpulkig/)\n Matrix: @tux0r:matrix.org\n Keyoxide: [tux0r](https://keyoxide.org/[email protected])\n\n[Impressum](https://tuxproject.de/blog/?page_id=1979), [Datenschutzhinweise](https://tuxproject.de/blog/?page_id=2670)\n",
  "markdownStats": {
    "images": 0,
    "links": 82,
    "tables": 0,
    "codeBlocks": 0,
    "headings": 0
  },
  "tokens": {
    "htmlTokens": 10662,
    "markdownTokens": 4620,
    "reduction": 6042,
    "reductionPercent": 57
  },
  "score": {
    "score": 50,
    "grade": "D",
    "dimensions": {
      "semanticHtml": {
        "score": 40,
        "weight": 20,
        "grade": "D",
        "checks": {
          "uses_article_or_main": {
            "score": 100,
            "weight": 20,
            "details": "Has <main>"
          },
          "proper_heading_hierarchy": {
            "score": 0,
            "weight": 25,
            "details": "No headings found"
          },
          "semantic_elements": {
            "score": 2,
            "weight": 20,
            "details": "2 semantic elements, 293 divs (ratio: 1%)"
          },
          "meaningful_alt_texts": {
            "score": 0,
            "weight": 15,
            "details": "0/1 images with meaningful alt text"
          },
          "low_div_nesting": {
            "score": 100,
            "weight": 20,
            "details": "Avg div depth: 2.3, max: 4"
          }
        }
      },
      "contentEfficiency": {
        "score": 80,
        "weight": 25,
        "grade": "B",
        "checks": {
          "token_reduction_ratio": {
            "score": 50,
            "weight": 40,
            "details": "57% token reduction (HTML→Markdown)"
          },
          "content_to_noise_ratio": {
            "score": 100,
            "weight": 30,
            "details": "Content ratio: 34.1% (12182 content chars / 35733 HTML bytes)"
          },
          "minimal_inline_styles": {
            "score": 100,
            "weight": 15,
            "details": "4/647 elements with inline styles (0.6%)"
          },
          "reasonable_page_weight": {
            "score": 100,
            "weight": 15,
            "details": "HTML size: 35KB"
          }
        }
      },
      "aiDiscoverability": {
        "score": 20,
        "weight": 25,
        "grade": "F",
        "checks": {
          "has_llms_txt": {
            "score": 0,
            "weight": 20,
            "details": "No llms.txt found"
          },
          "has_robots_txt": {
            "score": 100,
            "weight": 10,
            "details": "robots.txt exists"
          },
          "robots_allows_ai_bots": {
            "score": 67,
            "weight": 15,
            "details": "1/3 AI bots blocked: GPTBot"
          },
          "has_sitemap": {
            "score": 0,
            "weight": 10,
            "details": "No sitemap found"
          },
          "supports_markdown_negotiation": {
            "score": 0,
            "weight": 25,
            "details": "No Markdown for Agents support detected"
          },
          "has_content_signals": {
            "score": 0,
            "weight": 20,
            "details": "No Content-Signal found (robots.txt or HTTP headers)"
          }
        }
      },
      "structuredData": {
        "score": 10,
        "weight": 15,
        "grade": "F",
        "checks": {
          "has_schema_org": {
            "score": 0,
            "weight": 30,
            "details": "No JSON-LD / Schema.org found"
          },
          "has_open_graph": {
            "score": 0,
            "weight": 25,
            "details": "0/3 OG tags present"
          },
          "has_meta_description": {
            "score": 0,
            "weight": 20,
            "details": "No meta description"
          },
          "has_canonical_url": {
            "score": 0,
            "weight": 15,
            "details": "No canonical URL"
          },
          "has_lang_attribute": {
            "score": 100,
            "weight": 10,
            "details": "lang=\"de\""
          }
        }
      },
      "accessibility": {
        "score": 100,
        "weight": 15,
        "grade": "A",
        "checks": {
          "content_without_js": {
            "score": 100,
            "weight": 40,
            "details": "Content available without JavaScript"
          },
          "reasonable_page_size": {
            "score": 100,
            "weight": 30,
            "details": "Page size: 35KB"
          },
          "fast_content_position": {
            "score": 100,
            "weight": 30,
            "details": "Main content starts at 17% of HTML"
          }
        }
      }
    }
  },
  "recommendations": [
    {
      "id": "add_llms_txt",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_llms_txt.title",
      "descriptionKey": "rec.add_llms_txt.description",
      "howToKey": "rec.add_llms_txt.howto",
      "effort": "quick-win",
      "estimatedImpact": 10,
      "checkScore": 0,
      "checkDetails": "No llms.txt found"
    },
    {
      "id": "fix_heading_hierarchy",
      "priority": "critical",
      "category": "semanticHtml",
      "titleKey": "rec.fix_heading_hierarchy.title",
      "descriptionKey": "rec.fix_heading_hierarchy.description",
      "howToKey": "rec.fix_heading_hierarchy.howto",
      "effort": "quick-win",
      "estimatedImpact": 6,
      "checkScore": 0,
      "checkDetails": "No headings found"
    },
    {
      "id": "add_markdown_negotiation",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_markdown_negotiation.title",
      "descriptionKey": "rec.add_markdown_negotiation.description",
      "howToKey": "rec.add_markdown_negotiation.howto",
      "effort": "significant",
      "estimatedImpact": 6,
      "checkScore": 0,
      "checkDetails": "No Markdown for Agents support detected"
    },
    {
      "id": "add_sitemap",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_sitemap.title",
      "descriptionKey": "rec.add_sitemap.description",
      "howToKey": "rec.add_sitemap.howto",
      "effort": "quick-win",
      "estimatedImpact": 5,
      "checkScore": 0,
      "checkDetails": "No sitemap found"
    },
    {
      "id": "add_content_signals",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_content_signals.title",
      "descriptionKey": "rec.add_content_signals.description",
      "howToKey": "rec.add_content_signals.howto",
      "effort": "quick-win",
      "estimatedImpact": 5,
      "checkScore": 0,
      "checkDetails": "No Content-Signal found (robots.txt or HTTP headers)"
    },
    {
      "id": "improve_alt_texts",
      "priority": "critical",
      "category": "semanticHtml",
      "titleKey": "rec.improve_alt_texts.title",
      "descriptionKey": "rec.improve_alt_texts.description",
      "howToKey": "rec.improve_alt_texts.howto",
      "effort": "moderate",
      "estimatedImpact": 4,
      "checkScore": 0,
      "checkDetails": "0/1 images with meaningful alt text"
    },
    {
      "id": "add_schema_org",
      "priority": "high",
      "category": "structuredData",
      "titleKey": "rec.add_schema_org.title",
      "descriptionKey": "rec.add_schema_org.description",
      "howToKey": "rec.add_schema_org.howto",
      "effort": "moderate",
      "estimatedImpact": 6,
      "checkScore": 0,
      "checkDetails": "No JSON-LD / Schema.org found"
    },
    {
      "id": "add_semantic_elements",
      "priority": "high",
      "category": "semanticHtml",
      "titleKey": "rec.add_semantic_elements.title",
      "descriptionKey": "rec.add_semantic_elements.description",
      "howToKey": "rec.add_semantic_elements.howto",
      "effort": "moderate",
      "estimatedImpact": 5,
      "checkScore": 2,
      "checkDetails": "2 semantic elements, 293 divs (ratio: 1%)"
    },
    {
      "id": "add_open_graph",
      "priority": "high",
      "category": "structuredData",
      "titleKey": "rec.add_open_graph.title",
      "descriptionKey": "rec.add_open_graph.description",
      "howToKey": "rec.add_open_graph.howto",
      "effort": "quick-win",
      "estimatedImpact": 4,
      "checkScore": 0,
      "checkDetails": "0/3 OG tags present"
    },
    {
      "id": "add_meta_description",
      "priority": "high",
      "category": "structuredData",
      "titleKey": "rec.add_meta_description.title",
      "descriptionKey": "rec.add_meta_description.description",
      "howToKey": "rec.add_meta_description.howto",
      "effort": "quick-win",
      "estimatedImpact": 4,
      "checkScore": 0,
      "checkDetails": "No meta description"
    }
  ],
  "llmsTxtPreview": "# tuxproject.de\n\n> tuxproject.de (warum \"tuxproject\"?)\n· tux: maskottchen des kernels \"linux\", ein wohlgenährter, glücklicher pinguin.\n· project: engl. für \"projekt\", auch abk. f. \"projection\".\n\n## Main\n- [tuxproject.de :: Scheibe Wurst dazu?](https://tuxproject.de/): tuxproject.de (warum \"tuxproject\"?)\n· tux: maskottchen des kernels \"linux\", ein wohlgenährter, glücklicher pinguin.\n· p…\n- [Micro-Site-Version](https://tuxproject.de/?linktree)\n\n## Blog\n- [Hirnfick 2.0](https://tuxproject.de/blog)\n\n",
  "llmsTxtExisting": null,
  "emergingProtocols": {
    "oauthDiscovery": {
      "exists": false,
      "url": "https://tuxproject.de/.well-known/oauth-authorization-server"
    },
    "mcpServerCard": {
      "exists": false,
      "url": "https://tuxproject.de/.well-known/mcp.json"
    },
    "a2aAgentCard": {
      "exists": false,
      "url": "https://tuxproject.de/.well-known/agent.json"
    },
    "count": 0
  },
  "snippets": [
    {
      "id": "add_llms_txt",
      "title": "Create /llms.txt",
      "description": "Upload this file to your web root. It tells AI agents what your site is about and which pages matter.",
      "language": "markdown",
      "code": "# tuxproject.de\n\n> tuxproject.de (warum \"tuxproject\"?)\n· tux: maskottchen des kernels \"linux\", ein wohlgenährter, glücklicher pinguin.\n· project: engl. für \"projekt\", auch abk. f. \"projection\".\n\n## Main\n- [tuxproject.de :: Scheibe Wurst dazu?](https://tuxproject.de/): tuxproject.de (warum \"tuxproject\"?)\n· tux: maskottchen des kernels \"linux\", ein wohlgenährter, glücklicher pinguin.\n· p…\n- [Micro-Site-Version](https://tuxproject.de/?linktree)\n\n## Blog\n- [Hirnfick 2.0](https://tuxproject.de/blog)\n\n",
      "filename": "/llms.txt"
    },
    {
      "id": "fix_heading_hierarchy",
      "title": "Fix heading hierarchy",
      "description": "Your page has no <h1>. Every page needs exactly one <h1> as the main heading. Add it inside your <main> or <article>.",
      "language": "html",
      "code": "<h1>tuxproject.de :: Scheibe Wurst dazu?</h1>",
      "filename": "<main> or <article>"
    },
    {
      "id": "add_open_graph",
      "title": "Add missing Open Graph tags",
      "description": "Open Graph tags control how your page looks when shared on social media and how AI platforms preview your URL in answers.",
      "language": "html",
      "code": "<meta property=\"og:title\" content=\"tuxproject.de :: Scheibe Wurst dazu?\">\n<meta property=\"og:description\" content=\"Page description.\">\n<meta property=\"og:image\" content=\"https://yoursite.com/og-image.jpg\">\n<meta property=\"og:url\" content=\"https://tuxproject.de/\">\n<meta property=\"og:type\" content=\"website\">",
      "filename": "<head>",
      "stacks": [
        {
          "id": "html",
          "label": "HTML <head>",
          "language": "html",
          "filename": "<head>",
          "code": "<meta property=\"og:title\" content=\"tuxproject.de :: Scheibe Wurst dazu?\">\n<meta property=\"og:description\" content=\"Page description.\">\n<meta property=\"og:image\" content=\"https://yoursite.com/og-image.jpg\">\n<meta property=\"og:url\" content=\"https://tuxproject.de/\">\n<meta property=\"og:type\" content=\"website\">"
        },
        {
          "id": "wordpress",
          "label": "WordPress",
          "language": "php",
          "filename": "functions.php",
          "code": "<?php\n// Quick Open Graph tags without a plugin (skip if Yoast / Rank Math is active)\nadd_action('wp_head', function () {\n    if (!is_singular()) return;\n    $post = get_queried_object();\n    $title = get_the_title($post);\n    $desc  = get_the_excerpt($post) ?: wp_trim_words(strip_tags($post->post_content), 30);\n    $image = get_the_post_thumbnail_url($post, 'large') ?: 'https://yoursite.com/og-image.jpg';\n    $url   = get_permalink($post);\n    printf('<meta property=\"og:title\" content=\"%s\">' . \"\\n\", esc_attr($title));\n    printf('<meta property=\"og:description\" content=\"%s\">' . \"\\n\", esc_attr($desc));\n    printf('<meta property=\"og:image\" content=\"%s\">' . \"\\n\", esc_url($image));\n    printf('<meta property=\"og:url\" content=\"%s\">' . \"\\n\", esc_url($url));\n    echo '<meta property=\"og:type\" content=\"article\">' . \"\\n\";\n}, 5);"
        },
        {
          "id": "nextjs",
          "label": "Next.js",
          "language": "typescript",
          "filename": "app/page.tsx",
          "code": "// Next.js App Router — Metadata API\nimport type { Metadata } from 'next';\n\nexport const metadata: Metadata = {\n  title: \"tuxproject.de :: Scheibe Wurst dazu?\",\n  description: \"Page description.\",\n  openGraph: {\n    title: \"tuxproject.de :: Scheibe Wurst dazu?\",\n    description: \"Page description.\",\n    url: \"https://tuxproject.de/\",\n    images: [\"https://yoursite.com/og-image.jpg\"],\n    type: 'website',\n  },\n};"
        }
      ]
    },
    {
      "id": "add_meta_description",
      "title": "Add meta description",
      "description": "A good meta description (50-160 characters) helps AI agents understand your page quickly.",
      "language": "html",
      "code": "<meta name=\"description\" content=\"tuxproject.de (warum &quot;tuxproject&quot;?)\n· tux: maskottchen des kernels &quot;linux&quot;, ein wohlgenährter, glücklicher pinguin.\n· project: engl. für &quot;projekt&quot;, auch abk....\">",
      "filename": "<head>"
    },
    {
      "id": "add_schema_org",
      "title": "Add Schema.org JSON-LD",
      "description": "Structured data helps AI agents understand the type, author, and purpose of your content.",
      "language": "html",
      "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"WebPage\",\n  \"name\": \"tuxproject.de :: Scheibe Wurst dazu?\",\n  \"description\": \"Page description.\",\n  \"url\": \"https://tuxproject.de/\",\n  \"inLanguage\": \"de\"\n}\n</script>",
      "filename": "<head>"
    },
    {
      "id": "add_sitemap",
      "title": "Create /sitemap.xml",
      "description": "A sitemap helps AI agents discover all your pages. Most CMS platforms generate one automatically.",
      "language": "xml",
      "code": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>https://tuxproject.de/</loc>\n    <lastmod>2026-07-05</lastmod>\n  </url>\n</urlset>",
      "filename": "/sitemap.xml"
    },
    {
      "id": "add_content_signals",
      "title": "Add Content-Signal directives",
      "description": "Content-Signal tells AI agents how they may use your content. The canonical location is robots.txt, but you can also expose it as an HTTP header from any stack.",
      "language": "txt",
      "code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no",
      "filename": "/robots.txt",
      "stacks": [
        {
          "id": "robots",
          "label": "robots.txt",
          "language": "txt",
          "filename": "/robots.txt",
          "code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no"
        },
        {
          "id": "nginx",
          "label": "Nginx",
          "language": "nginx",
          "filename": "server block",
          "code": "# Inside your server { } block:\nadd_header Content-Signal \"search=yes, ai-input=yes, ai-train=no\" always;"
        },
        {
          "id": "apache",
          "label": "Apache",
          "language": "apache",
          "filename": ".htaccess",
          "code": "# In .htaccess (or VirtualHost):\nHeader set Content-Signal \"search=yes, ai-input=yes, ai-train=no\""
        },
        {
          "id": "wordpress",
          "label": "WordPress",
          "language": "php",
          "filename": "functions.php",
          "code": "<?php\n// In your theme's functions.php or a small mu-plugin\nadd_action('send_headers', function () {\n    header('Content-Signal: search=yes, ai-input=yes, ai-train=no');\n});\n\n// Optional: also append the directive to the dynamic robots.txt\nadd_filter('robots_txt', function ($output) {\n    return $output . \"\\nContent-Signal: search=yes, ai-input=yes, ai-train=no\\n\";\n}, 10, 1);"
        },
        {
          "id": "nextjs",
          "label": "Next.js",
          "language": "typescript",
          "filename": "middleware.ts",
          "code": "// middleware.ts (Next.js 13+ App Router or Pages Router)\nimport { NextResponse } from 'next/server';\nexport function middleware() {\n  const res = NextResponse.next();\n  res.headers.set(\n    'Content-Signal',\n    'search=yes, ai-input=yes, ai-train=no'\n  );\n  return res;\n}\nexport const config = { matcher: '/:path*' };"
        },
        {
          "id": "cloudflare",
          "label": "Cloudflare Workers",
          "language": "javascript",
          "filename": "worker.js",
          "code": "// Cloudflare Worker that proxies your origin and adds the header\nexport default {\n  async fetch(request, env, ctx) {\n    const res = await fetch(request);\n    const newRes = new Response(res.body, res);\n    newRes.headers.set(\n      'Content-Signal',\n      'search=yes, ai-input=yes, ai-train=no'\n    );\n    return newRes;\n  },\n};"
        },
        {
          "id": "express",
          "label": "Express / Fastify",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Express\napp.use((req, res, next) => {\n  res.setHeader('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n  next();\n});\n\n// Fastify\nfastify.addHook('onSend', (request, reply, payload, done) => {\n  reply.header('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n  done();\n});"
        }
      ]
    },
    {
      "id": "add_markdown_negotiation",
      "title": "Support Markdown for Agents",
      "description": "Let AI agents request a clean Markdown version of any page via content negotiation, .md alternate URLs, link tags or Link headers.",
      "language": "html",
      "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">",
      "filename": "<head>",
      "stacks": [
        {
          "id": "html",
          "label": "HTML <head>",
          "language": "html",
          "filename": "<head>",
          "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        },
        {
          "id": "express",
          "label": "Express",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\napp.get('/page', (req, res) => {\n  res.setHeader('Vary', 'Accept');\n  res.setHeader('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    res.type('text/markdown; charset=utf-8');\n    return res.send(renderMarkdown('page'));\n  }\n  res.render('page');\n});"
        },
        {
          "id": "fastify",
          "label": "Fastify",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n  reply.header('Vary', 'Accept');\n  reply.header('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n  }\n  return reply.view('/page.ejs');\n});"
        },
        {
          "id": "nextjs",
          "label": "Next.js",
          "language": "typescript",
          "filename": "app/page/route.ts",
          "code": "// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n  const accept = req.headers.get('accept') || '';\n  if (accept.includes('text/markdown')) {\n    return new Response(await renderMarkdown('page'), {\n      headers: {\n        'Content-Type': 'text/markdown; charset=utf-8',\n        'Vary': 'Accept',\n      },\n    });\n  }\n  // Fall through to the page component\n  return new Response(null, { status: 404 });\n}"
        },
        {
          "id": "wordpress",
          "label": "WordPress",
          "language": "php",
          "filename": "functions.php",
          "code": "<?php\n// Mechanism 1: respond to Accept: text/markdown on the same URL\nadd_action('template_redirect', function () {\n    if (!is_singular()) return;\n    $accept = $_SERVER['HTTP_ACCEPT'] ?? '';\n    if (strpos($accept, 'text/markdown') === false) return;\n    header('Content-Type: text/markdown; charset=utf-8');\n    header('Vary: Accept');\n    $post = get_queried_object();\n    echo \"# \" . get_the_title($post) . \"\\n\\n\";\n    echo wp_strip_all_tags(apply_filters('the_content', $post->post_content));\n    exit;\n});"
        },
        {
          "id": "static",
          "label": "Hugo / Jekyll / Astro",
          "language": "txt",
          "filename": "static/page.md",
          "code": "# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in <head>:\n#   <link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        }
      ]
    }
  ]
}

APIを使用してプログラムで取得できます(近日公開)

このJSONは内部使用向けです — MarkdownやllMs.txtファイルとは異なり、サイトにアップロードするものではありません。スコアの経時変化を追跡するための基準値として保存するか、開発チームと共有するか、CI/CDパイプラインに統合してください。

結果を共有

X LinkedIn Facebook WhatsApp Telegram Email

または AI に改善方法を聞く

セカンドオピニオンもどうぞ

Cloudflare も無料のスキャナーを公開していますが、問いが違います。あちらは、エージェントが呼び出すためにサイトが公開しているもの(MCP server card、Agent Skills、API カタログ、DNS レコード)を採点します。当社は、エージェントがコンテンツに到達し、読み、理解できるかを採点します。片方が高く、もう片方が低いサイトもあります。数字が食い違うのは当然です。別々の問いへの答えであり、どちらも知る価値があります。

Cloudflare で tuxproject.de をスキャン

バッジを埋め込む

このバッジをサイトに追加してください。AI対応スコアが変わると自動的に更新されます。

AgentReady.md score for tuxproject.de
Script 推奨
<script src="https://agentready.md/badge.js" data-id="bb00d99b-82a0-4c57-aa8b-5d9927612184" data-domain="tuxproject.de"></script>
Markdown
[![AgentReady.md score for tuxproject.de](https://agentready.md/badge/tuxproject.de.svg)](https://agentready.md/ja/r/bb00d99b-82a0-4c57-aa8b-5d9927612184)

近日公開: ドメイン全体分析

ドメイン全体をクロールし、llms.txtを生成し、AI対応スコアを経時的にモニタリング。ウェイトリストに登録して通知を受け取りましょう。

リストに登録されました!サービス開始時にお知らせします。