<?xml version="1.0" encoding="UTF-8"?>

<!--

	Feeds whisper secrets,
	In the RSS Club's embrace,
	Knowledge blooms in grace.

-->

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
xmlns:source="https://source.scripting.com/"
>

<channel>
	<title>Markdown &#8211; notizBlog</title>
	<atom:link href="https://notiz.blog/tag/markdown/feed/" rel="self" type="application/rss+xml" />
	<link>https://notiz.blog</link>
	<description>a weblog mainly about the open, portable, interoperable, small, social, synaptic, semantic, structured, distributed, (re-)decentralized, independent, microformatted and federated social web</description>
	<lastBuildDate>Sat, 07 Nov 2026 22:35:21 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://notiz.blog/wp-content/uploads/2019/10/cropped-notizblog-icon-1-32x32.png</url>
	<title>Markdown &#8211; notizBlog</title>
	<link>https://notiz.blog</link>
	<width>32</width>
	<height>32</height>
</image> 
<creativeCommons:license>https://creativecommons.org/licenses/by-sa/4.0/</creativeCommons:license>
	<script xmlns="http://www.w3.org/1999/xhtml" type="application/json" id="pretty-feed-translations">{"translation-revision-date":"2026-07-06T10:30:00+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/pretty-feed.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"de_DE","plural-forms":"nplurals=2; plural=(n != 1);"},"RSS feed icon":["RSS-Feed-Symbol"],"Web Feed":["Web-Feed"],"&lt;strong&gt;Look at you, following along the old-school way.&lt;\/strong&gt; Subscribe by copy-pasting the URL into your feed reader, or by clicking %1$shere%2$s...":["&lt;strong&gt;Sieh dich an, ganz old-school unterwegs.&lt;\/strong&gt; Abonniere den Feed, indem du die URL in deinen Feed-Reader kopierst oder %1$shier%2$s klickst ..."],"Visit %1$sAbout Feeds%2$s to get started with newsreaders and subscribing. It\u2019s free.":["Besuche %1$sAbout Feeds%2$s, um mit Newsreadern und dem Abonnieren zu starten. Es ist kostenlos."],"Visit Website":["Website besuchen"],"Recent Items":["Neueste Eintr\u00e4ge"],"Published:":["Ver\u00f6ffentlicht:"]}}}</script>
	<script xmlns="http://www.w3.org/1999/xhtml" src="https://notiz.blog/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255" defer=""/>
	<script xmlns="http://www.w3.org/1999/xhtml" src="https://notiz.blog/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216" defer=""/>
	<script xmlns="http://www.w3.org/1999/xhtml" src="https://notiz.blog/wp-content/plugins/pretty-feeds/assets/js/pretty-feed.js?ver=1.0.0" defer=""/>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://switchboard.p3k.io/"/>
<atom:link rel="self" href="https://notiz.blog/tag/markdown/feed/"/>
<atom:link rel="search" type="application/opensearchdescription+xml" title="Search notizBlog" href="https://notiz.blog/wp-api/opensearch/1.1/document" />
	<source:account service="rss.chat">notizBlog</source:account>
	<source:self>https://notiz.blog/tag/markdown/feed/</source:self>
<source:blogroll>https://notiz.blog/blogroll/?opml</source:blogroll>
	<item>
		<title>SocialSpecing &#038; HyperTexting</title>
		<link>https://notiz.blog/2026/11/07/socialspecing-hypertexting/</link>
					<comments>https://notiz.blog/2026/11/07/socialspecing-hypertexting/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Sat, 07 Nov 2026 20:15:50 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[HyperTexting]]></category>
		<category><![CDATA[IndieWeb]]></category>
		<category><![CDATA[Markdown]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[OPML]]></category>
		<category><![CDATA[SocialSpec]]></category>
		<category><![CDATA[well-known]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://notiz.blog/?p=59775</guid>

					<description><![CDATA[Vor ein paar Wochen hat mich <a rel="mention" class="u-url mention" href="https://mastodon.social/@voxpelli">@voxpelli</a> in einer Bluesky-Diskussion über SocialSpec erwähnt. Caleb Hailey (@calebhailey.com), der Initiator der Spec, hat dort nach Kontakten zu Automattic gesucht. Für Micro.blog gab es schon ein Plugin, für WordPress aber noch nicht. Pelle kenne ich schon eine ganze Weile aus dem IndieWeb-Umfeld und er meinte, dafür sei ich [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Vor ein paar Wochen hat mich <a rel="mention" class="u-url mention" href="https://mastodon.social/@voxpelli">@voxpelli</a> in einer <a href="https://bsky.app/profile/voxpelli.com/post/3mxtwpqtbk22i" target="_blank" rel="noopener">Bluesky-Diskussion</a> über <a href="https://socialspec.org/" target="_blank" rel="noopener">SocialSpec</a> erwähnt. Caleb Hailey (<a class="atmosphere-mention" href="https://bsky.app/profile/calebhailey.com">@calebhailey.com</a>), der Initiator der Spec, hat dort nach Kontakten zu Automattic gesucht. Für Micro.blog gab es schon ein Plugin, für WordPress aber noch nicht. Pelle kenne ich schon eine ganze Weile aus dem IndieWeb-Umfeld und er meinte, dafür sei ich wohl der richtige Ansprechpartner. Also hab ich ein bisschen mitgelesen und mir SocialSpec etwas genauer angeschaut.</p>



<h2 class="wp-block-heading">SocialSpec</h2>



<p class="wp-block-paragraph">SocialSpec macht aus einer Domain eine Art Social-Profil. Neben dem Feed veröffentlicht eine Seite drei einfache Dateien:</p>



<ul class="wp-block-list">
<li><a href="https://aboutspec.org/" target="_blank" rel="noopener">AboutSpec</a> unter <code>/.well-known/about.md</code>, die About-Seite als Markdown</li>



<li><a href="https://contactspec.org/" target="_blank" rel="noopener">ContactSpec</a> unter <code>/.well-known/contact.vcf</code>, eine Visitenkarte als vCard</li>



<li><a href="https://followspec.org/" target="_blank" rel="noopener">FollowSpec</a> unter <code>/.well-known/following.opml</code>, die Blogroll als OPML</li>
</ul>



<p class="wp-block-paragraph"><em>„single purpose, single file, and single request / No HTML scraping required.“</em></p>



<p class="wp-block-paragraph">Im IndieWeb-Chat wurde SocialSpec <a href="https://chat.indieweb.org/dev/2026-10-14" target="_blank" rel="noopener">Mitte Oktober</a> schon ausführlich diskutiert, und auch <a href="https://herrmontag.de/social-spec-und-social-browser/" target="_blank" rel="noopener">Herr Montag</a> ordnet SocialSpec in seinem Post ähnlich ein. Kritisiert wurden vor allem die Side-Files.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">The sidefile-antipattern is a violation of the DRY principle by the use of secondary files (typically in some one-off XML format) to provide information that is a duplicate of information available in primary files on a website (in HTML), and is an antipattern due to typical DRY violation problems such as out-of-date, missing, corrupted, or outright false data.</p>
<cite><a href="https://indieweb.org/side_file" target="_blank" rel="noopener">indieweb.org/side_file</a></cite></blockquote>



<p class="wp-block-paragraph">Caleb hat das <a href="https://chat.indieweb.org/dev/2026-10-14/1792018371247200" target="_blank" rel="noopener">aus Sicht der App-Entwicklung erklärt</a>. Nicht jeder kann sein HTML anpassen, eine OPML-Datei oder eine vCard kann aber fast jedes Tool exportieren. Und für eine App ist eine Datei an einer festen Adresse einfacher und zuverlässiger als HTML zu parsen.</p>



<p class="wp-block-paragraph">Das deckt sich mit meinen Erfahrungen mit WordPress. Ich nutze <a href="https://notiz.blog/2006/11/20/microformats/" target="_blank" rel="noopener">Microformats seit 20 Jahren</a>, aber als Plug&amp;Play-Lösung in einem CMS funktionieren sie einfach nicht gut. Darüber diskutieren wir im <a href="#indieweb-wordpress">#indieweb-wordpress</a> Channel schon ewig. HTML können die meisten WordPress-User nicht selbst bearbeiten, die <a href="https://indieweb.org/WordPress/Themes" target="_blank" rel="noopener">Liste an Themes mit Microformats2-Support</a> ist leider überschaubar und über ein Plugin <a href="https://github.com/indieweb/wordpress-uf2/issues/31" target="_blank" rel="noopener">geht es einfach nicht</a>. Es bleiben eigentlich nur Blöcke, über die man Inhalte semantisch auszeichnen kann, so wie bei <a href="https://wordpress.org/plugins/indieblocks/" target="_blank" rel="noopener">IndieBlocks</a>… und ausgerechnet der Block-Editor ist in der IndieWeb-Community nicht besonders beliebt, aber das ist ein anderes Thema und einen eigenen Post wert 😉</p>



<p class="wp-block-paragraph">Ich kann Calebs Punkt also durchaus nachvollziehen.</p>



<h2 class="wp-block-heading">Die WordPress-Plugins</h2>



<p class="wp-block-paragraph">Wenn mich Pelle schon empfiehlt, muss ich dem natürlich auch gerecht werden 😊</p>



<p class="wp-block-paragraph">Am meisten Sinn gemacht und direkt einen Mehrwert geboten hat FollowSpec im <a href="https://wordpress.org/plugins/blockroll/" target="_blank" rel="noopener">Blockroll-Plugin</a>, also hab ich dort <a href="https://github.com/pfefferle/wordpress-blockroll/pull/47" target="_blank" rel="noopener"><code>/.well-known/following.opml</code> eingebaut</a>. Die Datei ist eine einfache Liste mit den Feeds aller gelisteten Blogrolls. Links ohne Feed lasse ich weg und Feeds, die in mehreren Blogrolls stehen, kommen nur einmal rein.</p>



<p class="wp-block-paragraph">Blockroll kümmert sich aber nur um die <code>following.opml</code>, für alle drei Dateien hab ich ein <a href="https://github.com/pfefferle/wordpress-socialspec/" target="_blank" rel="noopener">eigenes Plugin</a> geschrieben. Ist das SocialSpec-Plugin aktiv, liefert Blockroll keine eigene Datei mehr aus, sondern hängt die Feeds der Blogrolls an die <code>following.opml</code> von SocialSpec mit dran.</p>



<p class="wp-block-paragraph">Beim SocialSpec-Plugin verwende ich, soweit möglich, die Daten, die schon in WordPress stecken. Man muss also nichts neu schreiben. In den Einstellungen wählt man nur aus, wer die Seite repräsentiert (ein User für ein persönliches Blog oder „niemand“ für ein Magazin oder eine Firma) und, wenn man will, eine andere About-Seite.</p>



<figure class="wp-block-image size-full"><picture class="wp-picture-60318" style="display: contents;"><source type="image/webp" srcset="https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-png.webp 1600w, https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-700x526-png.webp 700w, https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-900x676-png.webp 900w, https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-768x577-png.webp 768w, https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-1536x1154-png.webp 1536w" sizes="(max-width: 700px) 100vw, 700px"><img data-dominant-color="cdced0" data-has-transparency="true" style="--dominant-color: #cdced0;" data-wp-picture-wrapped fetchpriority="high" decoding="async" width="1600" height="1202" sizes="(max-width: 700px) 100vw, 700px" src="https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings.png" alt="Einstellungsseite des SocialSpec-Plugins in WordPress mit einer Auswahl, wer die Seite repräsentiert, einer Auswahl für die About-Seite und den Links zu den drei Dateien." class="wp-image-60318 has-transparency" srcset="https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings.png 1600w, https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-700x526.png 700w, https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-900x676.png 900w, https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-768x577.png 768w, https://notiz.blog/wp-content/uploads/2026/11/socialspec-settings-1536x1154.png 1536w" /></picture></figure>



<p class="wp-block-paragraph">Für die <code>about.md</code> nehme ich standardmäßig die <a href="https://slashpages.net/#about" target="_blank" rel="noopener"><code>/about</code> Slashpage</a> und wandle das HTML in Markdown um. Hat man in den Einstellungen eine andere Seite ausgewählt, nehme ich die. Gibt es gar keine About-Seite, nehme ich als Fallback die biografischen Angaben aus dem Profil.</p>



<p class="wp-block-paragraph">Die About-Seite als Markdown passt übrigens gut zu Dave Winers Idee vom „Web of Markdown“:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">How about a Markdown web browser. No CSS, no frameworks, just Markdown files.</p>
<cite><a href="http://scripting.com/2026/10/06/005559.html" target="_blank" rel="noopener">Dave Winer – The web of Markdown</a></cite></blockquote>



<p class="wp-block-paragraph">Für die <code>contact.vcf</code> nehme ich standardmäßig das Profil des ausgewählten Users, mit Name, Website, biografischen Angaben und Profilbild. Ist kein User ausgewählt, nehme ich als Fallback Titel, Untertitel und Icon der Seite. Die E-Mail-Adresse veröffentliche ich nicht, man kann sie aber über einen Filter ergänzen.</p>



<p class="wp-block-paragraph">WordPress hat keine Liste mit Blogs, denen man folgt. Für die OPML können andere Plugins wie Blockroll über einen Filter Feeds ergänzen. Außerdem nehme ich die Links aus dem alten Link-Manager, wenn sie einen Feed haben. Und wie bei den <a href="https://notiz.blog/2026/10/19/xslt-js/" target="_blank" rel="noopener">anderen XML-Formaten</a> hab ich für die OPML eine Ansicht im Browser gebaut, mit einem „Subscribe“-Button für jeden Feed.</p>



<p class="wp-block-paragraph">Alle drei Dateien und die normalen Feeds von WordPress schicken außerdem CORS-Header mit, damit Apps sie direkt im Browser laden können.</p>



<p class="wp-block-paragraph">Auf notiz.blog gibt es meine About-Seite schon als <a href="https://notiz.blog/.well-known/about.md" target="_blank" rel="noopener">about.md</a>, meine Kontaktdaten als <a href="https://notiz.blog/.well-known/contact.vcf" target="_blank" rel="noopener">contact.vcf</a> und die Blogs, denen ich folge, als <a href="https://notiz.blog/.well-known/following.opml" target="_blank" rel="noopener">following.opml</a>.</p>



<h2 class="wp-block-heading">HyperTexting</h2>



<p class="wp-block-paragraph">Eingebaut hab ich SocialSpec vor allem, weil es relativ einfach war. Den Sinn dahinter hab ich aber erst durch HyperTexting wirklich gesehen.</p>



<p class="wp-block-paragraph">Über <a href="https://hypertexting.com/" target="_blank" rel="noopener">HyperTexting</a> bin ich eher zufällig gestolpert. Caleb hat mir in einem kurzen Video gezeigt, wie meine SocialSpec-Implementierung auf notiz.blog in seiner App aussieht.</p>



<figure class="wp-block-video"><video height="1920" style="aspect-ratio: 884 / 1920;" width="884" controls loop src="https://notiz.blog/wp-content/uploads/2026/11/hypertexting-notiz-blog.mp4"></video><figcaption class="wp-element-caption"><em>notiz.blog in HyperTexting (<a href="https://bsky.app/profile/calebhailey.com/post/3mxzesskz2s24" target="_blank" rel="noopener">Video von Caleb</a>)</em></figcaption></figure>



<p class="wp-block-paragraph">(About-Seite und Kontaktdaten zeigt die App bisher allerdings nur in der TestFlight-Version an.)</p>



<p class="wp-block-paragraph">Ich mag vor allem, dass sich die App wie ein Social Network anfühlt und trotzdem weitestgehend mit Web-2.0-Technologien wie Blogrolls und RSS funktioniert.</p>



<p class="wp-block-paragraph">Im Prinzip ist HyperTexting ein Feed-Reader mit einer chronologischen Timeline, ohne Algorithmus und ohne Account. Jede Seite bekommt ein Profil mit Posts, Links, About-Seite, Kontaktdaten und wem sie folgt, und zukünftig soll man auch direkt auf die eigene Seite posten können, wohl auch über <a href="https://micropub.net/" target="_blank" rel="noopener">Micropub</a>. Damit folgt HyperTexting dem gleichen Muster wie ein <a href="https://indieweb.org/social_reader" target="_blank" rel="noopener">Social Reader</a> aus dem IndieWeb. Man liest alles in einer Timeline und antwortet direkt von dort, die eigenen Posts landen aber auf der eigenen Seite und nicht auf einer Plattform. Unter der Haube steckt ein Static-Site-Generator, den es auch <a href="https://hypertexting.dev/" target="_blank" rel="noopener">als CLI</a> gibt.</p>



<h2 class="wp-block-heading">sodir.org</h2>



<p class="wp-block-paragraph">Über den <a href="https://maurice-renck.de/de/blog/2026/socialspec" target="_blank" rel="noopener">Post von Maurice</a> bin ich noch auf <a href="https://sodir.org/" target="_blank" rel="noopener">sodir.org</a> gestoßen. Das ist eine Art Browser für SocialSpec-Profile. Man gibt eine Domain ein und sieht die letzten Posts, wem die Seite folgt, die About-Seite und die Kontaktdaten. Die Daten kommen direkt von der Seite, ohne Account und ohne Plattform. Maurice überlegt übrigens gerade, wie er SocialSpec in Kirby einbaut.</p>



<p class="wp-block-paragraph">Ich bin gespannt!</p>
<hr /><p>Glückwunsch, du liest per RSS! Du gehörst zu einer kleinen, feinen Gruppe, die stilvoll auf dem Laufenden bleibt.</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2026/11/07/socialspecing-hypertexting/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		<enclosure url="https://notiz.blog/wp-content/uploads/2026/11/hypertexting-notiz-blog.mp4" length="13854077" type="video/mp4" />

			</item>
	</channel>
</rss>
