Implement AI frontmatter defaults and metadata outputs
This commit is contained in:
@@ -5,7 +5,15 @@ withSidebar: true
|
||||
{# Layout for slash pages (/about, /now, /uses, etc.) #}
|
||||
{# These are root-level pages created via Indiekit's page post type #}
|
||||
|
||||
<article class="h-entry">
|
||||
{# AI metadata compatibility: support nested ai object plus legacy top-level keys #}
|
||||
{% set aiMeta = ai or {} %}
|
||||
{% set aiTextLevel = aiTextLevel or ai_text_level or aiMeta.textLevel or aiMeta.aiTextLevel or "0" %}
|
||||
{% set aiCodeLevel = aiCodeLevel or ai_code_level or aiMeta.codeLevel or aiMeta.aiCodeLevel or "0" %}
|
||||
{% set aiTools = aiTools or ai_tools or aiMeta.aiTools or aiMeta.tools %}
|
||||
{% set aiDescription = aiDescription or ai_description or aiMeta.aiDescription or aiMeta.description %}
|
||||
{% set aiUsed = (aiTextLevel and aiTextLevel !== "0") or (aiCodeLevel and aiCodeLevel !== "0") %}
|
||||
|
||||
<article class="h-entry{% if aiUsed %} h-ai-usage{% endif %}" data-ai-text-level="{{ aiTextLevel }}" data-ai-code-level="{{ aiCodeLevel or '0' }}" data-ai-used="{% if aiUsed %}true{% else %}false{% endif %}"{% if aiTools %} data-ai-tools="{{ aiTools }}"{% endif %}>
|
||||
<header class="mb-6 sm:mb-8">
|
||||
<h1 class="p-name text-2xl sm:text-3xl font-bold text-surface-900 dark:text-surface-100 mb-2">
|
||||
{{ title }}
|
||||
@@ -76,10 +84,6 @@ withSidebar: true
|
||||
{% endif %}
|
||||
|
||||
{# AI usage disclosure #}
|
||||
{% set aiTextLevel = aiTextLevel or ai_text_level %}
|
||||
{% set aiCodeLevel = aiCodeLevel or ai_code_level %}
|
||||
{% set aiTools = aiTools or ai_tools %}
|
||||
{% set aiDescription = aiDescription or ai_description %}
|
||||
{% if aiTextLevel or aiCodeLevel or aiTools %}
|
||||
<aside class="mt-6 p-4 rounded-lg bg-surface-50 dark:bg-surface-800/50 border border-surface-200 dark:border-surface-700 shadow-sm">
|
||||
<div class="flex items-center gap-2 mb-2">
|
||||
@@ -109,6 +113,16 @@ withSidebar: true
|
||||
<p class="mt-2 text-xs text-surface-600 dark:text-surface-400">{{ aiDescription }}</p>
|
||||
{% endif %}
|
||||
<p class="mt-2 text-xs"><a href="/ai/" class="text-accent-600 dark:text-accent-400 hover:underline">Learn more about AI usage on this site →</a></p>
|
||||
<div class="hidden">
|
||||
<span class="p-ai-text-level">{{ aiTextLevel }}</span>
|
||||
<span class="p-ai-code-level">{{ aiCodeLevel or "0" }}</span>
|
||||
{% if aiTools %}
|
||||
<span class="p-ai-tools">{{ aiTools }}</span>
|
||||
{% endif %}
|
||||
{% if aiDescription %}
|
||||
<span class="e-ai-description">{{ aiDescription }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</aside>
|
||||
{% endif %}
|
||||
|
||||
@@ -138,6 +152,9 @@ withSidebar: true
|
||||
{# Pagefind filter metadata #}
|
||||
<div hidden>
|
||||
<span data-pagefind-filter="type">Page</span>
|
||||
<span data-pagefind-filter="ai-text-level">{{ aiTextLevel }}</span>
|
||||
<span data-pagefind-filter="ai-code-level">{{ aiCodeLevel or "0" }}</span>
|
||||
<span data-pagefind-filter="ai-used">{% if aiUsed %}yes{% else %}no{% endif %}</span>
|
||||
{% if category %}
|
||||
{% if category is string %}
|
||||
<span data-pagefind-filter="category">{{ category }}</span>
|
||||
@@ -148,4 +165,24 @@ withSidebar: true
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{# JSON-LD Structured Data for pages with AI transparency metadata #}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebPage",
|
||||
"name": {{ title | dump | safe }},
|
||||
"url": "{{ site.url }}{{ page.url }}",
|
||||
"datePublished": "{{ page.date | isoDate }}",
|
||||
"dateModified": "{{ (updated or page.date) | isoDate }}",
|
||||
"usageInfo": "{{ site.url }}/ai"{% set _aiParts = [] %}{% if aiTextLevel %}{% set _textLabel %}{% if aiTextLevel === "0" %}None{% elif aiTextLevel === "1" %}Editorial assistance{% elif aiTextLevel === "2" %}Co-drafting{% elif aiTextLevel === "3" %}AI-generated{% endif %}{% endset %}{% set _aiParts = (_aiParts.push("Text: " + _textLabel), _aiParts) %}{% endif %}{% if aiCodeLevel %}{% set _codeLabel %}{% if aiCodeLevel === "0" %}Human-written{% elif aiCodeLevel === "1" %}AI-assisted{% elif aiCodeLevel === "2" %}AI-generated{% endif %}{% endset %}{% set _aiParts = (_aiParts.push("Code: " + _codeLabel), _aiParts) %}{% endif %}{% if aiTools %}{% set _aiParts = (_aiParts.push("Tools: " + aiTools), _aiParts) %}{% endif %},
|
||||
"creativeWorkStatus": "{{ _aiParts | join(', ') }}",
|
||||
"additionalProperty": [
|
||||
{ "@type": "PropertyValue", "name": "aiTextLevel", "value": "{{ aiTextLevel }}" },
|
||||
{ "@type": "PropertyValue", "name": "aiCodeLevel", "value": "{{ aiCodeLevel or '0' }}" }{% if aiTools %},
|
||||
{ "@type": "PropertyValue", "name": "aiTools", "value": {{ aiTools | dump | safe }} }{% endif %}
|
||||
]{% if aiDescription %},
|
||||
"abstract": {{ aiDescription | dump | safe }}{% endif %}
|
||||
}
|
||||
</script>
|
||||
</article>
|
||||
|
||||
@@ -2,7 +2,15 @@
|
||||
layout: layouts/base.njk
|
||||
withBlogSidebar: true
|
||||
---
|
||||
<article class="h-entry post" x-data="lightbox" @keydown.window="onKeydown($event)">
|
||||
{# AI metadata compatibility: support nested ai object plus legacy top-level keys #}
|
||||
{% set aiMeta = ai or {} %}
|
||||
{% set aiTextLevel = aiTextLevel or ai_text_level or aiMeta.textLevel or aiMeta.aiTextLevel or "0" %}
|
||||
{% set aiCodeLevel = aiCodeLevel or ai_code_level or aiMeta.codeLevel or aiMeta.aiCodeLevel or "0" %}
|
||||
{% set aiTools = aiTools or ai_tools or aiMeta.aiTools or aiMeta.tools %}
|
||||
{% set aiDescription = aiDescription or ai_description or aiMeta.aiDescription or aiMeta.description %}
|
||||
{% set aiUsed = (aiTextLevel and aiTextLevel !== "0") or (aiCodeLevel and aiCodeLevel !== "0") %}
|
||||
|
||||
<article class="h-entry post{% if aiUsed %} h-ai-usage{% endif %}" x-data="lightbox" @keydown.window="onKeydown($event)" data-ai-text-level="{{ aiTextLevel }}" data-ai-code-level="{{ aiCodeLevel or '0' }}" data-ai-used="{% if aiUsed %}true{% else %}false{% endif %}"{% if aiTools %} data-ai-tools="{{ aiTools }}"{% endif %}>
|
||||
{# Support both camelCase (Indiekit Eleventy preset) and underscore (legacy) property names #}
|
||||
{% set bookmarkedUrl = bookmarkOf or bookmark_of %}
|
||||
{% set likedUrl = likeOf or like_of %}
|
||||
@@ -69,10 +77,6 @@ withBlogSidebar: true
|
||||
{% include "components/reply-context.njk" %}
|
||||
|
||||
{# AI usage disclosure — always shown, collapsed by default, placed after reply context #}
|
||||
{% set aiTextLevel = aiTextLevel or ai_text_level or "0" %}
|
||||
{% set aiCodeLevel = aiCodeLevel or ai_code_level %}
|
||||
{% set aiTools = aiTools or ai_tools %}
|
||||
{% set aiDescription = aiDescription or ai_description %}
|
||||
<details class="mt-4 text-xs text-surface-600 dark:text-surface-400">
|
||||
<summary class="cursor-pointer hover:text-surface-600 dark:hover:text-surface-300 list-none flex items-center gap-1.5 [&::-webkit-details-marker]:hidden">
|
||||
<svg class="w-3.5 h-3.5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||
@@ -86,6 +90,16 @@ withBlogSidebar: true
|
||||
<p class="mt-1 pl-5">{{ aiDescription }}</p>
|
||||
{% endif %}
|
||||
<p class="mt-1 pl-5"><a href="/ai/" class="hover:text-accent-600 dark:hover:text-accent-400 underline">Learn more about AI usage on this site</a></p>
|
||||
<div class="hidden">
|
||||
<span class="p-ai-text-level">{{ aiTextLevel }}</span>
|
||||
<span class="p-ai-code-level">{{ aiCodeLevel or "0" }}</span>
|
||||
{% if aiTools %}
|
||||
<span class="p-ai-tools">{{ aiTools }}</span>
|
||||
{% endif %}
|
||||
{% if aiDescription %}
|
||||
<span class="e-ai-description">{{ aiDescription }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</details>
|
||||
|
||||
{# Pending syndication targets (for services like IndieNews that require u-syndication before webmention) #}
|
||||
@@ -209,6 +223,9 @@ withBlogSidebar: true
|
||||
{% else %}<span data-pagefind-filter="type">Note</span>
|
||||
{% endif %}
|
||||
<span data-pagefind-filter="year">{{ date | date("yyyy") }}</span>
|
||||
<span data-pagefind-filter="ai-text-level">{{ aiTextLevel }}</span>
|
||||
<span data-pagefind-filter="ai-code-level">{{ aiCodeLevel or "0" }}</span>
|
||||
<span data-pagefind-filter="ai-used">{% if aiUsed %}yes{% else %}no{% endif %}</span>
|
||||
{% if category %}
|
||||
{% if category is string %}
|
||||
<span data-pagefind-filter="category">{{ category }}</span>
|
||||
@@ -260,9 +277,15 @@ withBlogSidebar: true
|
||||
}
|
||||
},
|
||||
"description": {{ postDesc | dump | safe }}{% if postImage and postImage != "" and (postImage | length) > 10 %},
|
||||
"image": ["{% if postImage.startsWith('http') %}{{ postImage }}{% elif '/' in postImage and postImage[0] == '/' %}{{ site.url }}{{ postImage }}{% else %}{{ site.url }}/{{ postImage }}{% endif %}"]{% endif %}{% if aiTextLevel or aiCodeLevel or aiTools %},
|
||||
"image": ["{% if postImage.startsWith('http') %}{{ postImage }}{% elif '/' in postImage and postImage[0] == '/' %}{{ site.url }}{{ postImage }}{% else %}{{ site.url }}/{{ postImage }}{% endif %}"]{% endif %},
|
||||
"usageInfo": "{{ site.url }}/ai"{% set _aiParts = [] %}{% if aiTextLevel %}{% set _textLabel %}{% if aiTextLevel === "0" %}None{% elif aiTextLevel === "1" %}Editorial assistance{% elif aiTextLevel === "2" %}Co-drafting{% elif aiTextLevel === "3" %}AI-generated{% endif %}{% endset %}{% set _aiParts = (_aiParts.push("Text: " + _textLabel), _aiParts) %}{% endif %}{% if aiCodeLevel %}{% set _codeLabel %}{% if aiCodeLevel === "0" %}Human-written{% elif aiCodeLevel === "1" %}AI-assisted{% elif aiCodeLevel === "2" %}AI-generated{% endif %}{% endset %}{% set _aiParts = (_aiParts.push("Code: " + _codeLabel), _aiParts) %}{% endif %}{% if aiTools %}{% set _aiParts = (_aiParts.push("Tools: " + aiTools), _aiParts) %}{% endif %},
|
||||
"creativeWorkStatus": "{{ _aiParts | join(', ') }}"{% endif %}
|
||||
"creativeWorkStatus": "{{ _aiParts | join(', ') }}",
|
||||
"additionalProperty": [
|
||||
{ "@type": "PropertyValue", "name": "aiTextLevel", "value": "{{ aiTextLevel }}" },
|
||||
{ "@type": "PropertyValue", "name": "aiCodeLevel", "value": "{{ aiCodeLevel or '0' }}" }{% if aiTools %},
|
||||
{ "@type": "PropertyValue", "name": "aiTools", "value": {{ aiTools | dump | safe }} }{% endif %}
|
||||
]{% if aiDescription %},
|
||||
"abstract": {{ aiDescription | dump | safe }}{% endif %}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
9
blog.njk
9
blog.njk
@@ -324,12 +324,15 @@ permalink: "blog/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber
|
||||
{% endif %}
|
||||
|
||||
{# AI usage badge — only show when AI was actually used (level > 0) #}
|
||||
{% set postAiText = post.data.aiTextLevel or post.data.ai_text_level %}
|
||||
{% set postAiCode = post.data.aiCodeLevel or post.data.ai_code_level %}
|
||||
{% set postAi = post.data.ai or {} %}
|
||||
{% set postAiText = post.data.aiTextLevel or post.data.ai_text_level or postAi.textLevel or postAi.aiTextLevel or "0" %}
|
||||
{% set postAiCode = post.data.aiCodeLevel or post.data.ai_code_level or postAi.codeLevel or postAi.aiCodeLevel or "0" %}
|
||||
{% if (postAiText and postAiText !== "0") or (postAiCode and postAiCode !== "0") %}
|
||||
<span class="inline-flex items-center gap-1 mt-2 px-1.5 py-0.5 rounded text-[10px] font-medium bg-surface-100 dark:bg-surface-700 text-surface-600 dark:text-surface-400" title="AI usage: Text level {{ postAiText or '–' }}, Code level {{ postAiCode or '–' }}">
|
||||
<span class="inline-flex items-center gap-1 mt-2 px-1.5 py-0.5 rounded text-[10px] font-medium bg-surface-100 dark:bg-surface-700 text-surface-600 dark:text-surface-400" title="AI usage: Text level {{ postAiText or '–' }}, Code level {{ postAiCode or '–' }}" data-ai-text-level="{{ postAiText }}" data-ai-code-level="{{ postAiCode or '0' }}" data-ai-used="true">
|
||||
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 3.104v5.714a2.25 2.25 0 01-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 014.5 0m0 0v5.714a2.25 2.25 0 00.659 1.591L19 14.5M14.25 3.104c.251.023.501.05.75.082M19 14.5l-2.47 2.47a2.25 2.25 0 01-1.59.659H9.06a2.25 2.25 0 01-1.591-.659L5 14.5m14 0V17a2 2 0 01-2 2H7a2 2 0 01-2-2v-2.5"/></svg>
|
||||
AI{% if postAiText %}: T{{ postAiText }}{% endif %}{% if postAiCode %}/C{{ postAiCode }}{% endif %}
|
||||
<span class="p-ai-text-level hidden">{{ postAiText }}</span>
|
||||
<span class="p-ai-code-level hidden">{{ postAiCode or "0" }}</span>
|
||||
</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
@@ -7,6 +7,11 @@ category:
|
||||
- lang:de
|
||||
visibility: public
|
||||
permalink: https://blog.giersig.eu/articles/du-machst-es-dir-aber-leicht/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
Es gibt zwei Standards, wie viele Menschen reagieren, wenn sie zum ersten Mal von meiner Art, Beziehung zu definieren und zu leben, hören:
|
||||
|
||||
@@ -8,6 +8,11 @@ category:
|
||||
- lang:de
|
||||
visibility: public
|
||||
permalink: https://blog.giersig.eu/articles/murnauer-dialektik/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,11 @@ visibility: public
|
||||
updated: 2026-03-08T07:50:18.987Z
|
||||
summary: Über den “richtigen” Umgang mit der Corona-Pandemie wird gestritten und debattiert. Über den richtigen Umgang mit den rechtsoffenen Corona-Demos herrscht jedoch eine seltsam anmutende und verstörende Einigkeit.
|
||||
permalink: https://blog.giersig.eu/articles/perspektiven-auf-die-corona-demos/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
Über den “richtigen” Umgang mit der Corona-Pandemie wird gestritten und debattiert. Über den richtigen Umgang mit den rechtsoffenen Corona-Demos herrscht jedoch eine seltsam anmutende und verstörende Einigkeit. Hier und da wird zwar darauf hingewiesen, dass der Terminus “Covidioten” ableistisch ist und dass das Wort Verschwörungstheorie den falschen Anschein von Wissenschaftlichkeit erwecken kann und man darum besser “-ideologie” oder “-erzählung” nutzen sollte. Das sind fraglos wichtige Beiträge zu dieser Debatte. Aber um den Kern der Frage, nämlich, was so viele Menschen dazu bringt, solch offensichtlich unwissenschaftlichen Unfug zu vertreten, und aus jeglicher logischen Lebensführung herauszutreten und in die pure Emotion einzutreten, wird sich nichtwissenwollend und nichtinteressierend ausgeschwiegen. Diese Menschen werden kurzerhand als Verirrte stigmatisiert, und das Thema wird mit dieser breit geteilten und allseits anerkannten Erkenntnis schleunig abgeschlossen.
|
||||
|
||||
@@ -8,6 +8,11 @@ category:
|
||||
- lang:de
|
||||
visibility: public
|
||||
permalink: https://blog.giersig.eu/articles/soeders-tweet-zu-trumps-wahl/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
> Amerika hat gewählt - und das eindeutig. Entgegen mancher Prognosen ist es ein klarer Sieg für Donald Trump und die Republikaner. Glückwunsch an Donald Trump. Für Deutschland muss sich jetzt aber einiges zwingend ändern. Natürlich bleiben die USA unser wichtigster Partner: Aber wir werden so gefordert wie nie. Es weht ein anderer Wind. Wir müssen uns deutlich mehr anstrengen, um mithalten zu können: Die Bundeswehr muss massiv gestärkt werden - statt zwei Prozent vom BIP braucht es mindestens drei Prozent und eine echte Wehrpflicht. Beides rasch! Und wirtschaftlich benötigt Deutschland ein komplettes Update mit vergleichbaren Steuern und Energiepreisen wie die USA. Klar ist auch: Einen gestärkten Donald Trump wird eine schwache und zerstrittene Bundesregierung wenig beeindrucken. Daher braucht es jetzt erst recht Neuwahlen und einen Neuanfang in Deutschland. Die Partnerschaft mit den USA bleibt zentral, aber sie muss mehr aus eigener Stärke heraus erfolgen. Kontinuität in der Schwäche hilft unserem Land nicht.
|
||||
|
||||
@@ -7,4 +7,9 @@ category:
|
||||
mpSyndicateTo:
|
||||
- https://blog.giersig.eu/
|
||||
permalink: https://blog.giersig.eu/bookmarks/14b61/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
@@ -5,6 +5,11 @@ bookmarkOf: https://rmendes.net/
|
||||
category: dev
|
||||
updated: 2026-03-07T23:35:24.179Z
|
||||
permalink: https://blog.giersig.eu/bookmarks/173ac/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
Ricardo inspired this blog
|
||||
|
||||
@@ -7,6 +7,11 @@ category:
|
||||
mpSyndicateTo:
|
||||
- https://blog.giersig.eu/
|
||||
permalink: https://blog.giersig.eu/bookmarks/1a009/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
Post your Swarm checkins to your website via Micropub.
|
||||
|
||||
@@ -9,4 +9,9 @@ syndication:
|
||||
mpSyndicateTo:
|
||||
- https://blog.giersig.eu/
|
||||
permalink: https://blog.giersig.eu/likes/ae278/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
@@ -8,4 +8,9 @@ category:
|
||||
mpSyndicateTo:
|
||||
- https://blog.giersig.eu/
|
||||
permalink: https://blog.giersig.eu/likes/e15f0/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
@@ -22,6 +22,11 @@ location:
|
||||
visibility: unlisted
|
||||
updated: 2026-03-08T14:52:23.406Z
|
||||
permalink: https://blog.giersig.eu/notes/1e3e4/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
indieweb
|
||||
|
||||
@@ -4,6 +4,11 @@ visibility: public
|
||||
category: dev
|
||||
updated: 2026-03-08T07:53:02.269Z
|
||||
permalink: https://blog.giersig.eu/notes/9d830/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
Hello world!
|
||||
|
||||
@@ -7,6 +7,11 @@ category:
|
||||
- slashpage
|
||||
updated: 2026-03-08T12:47:17.679Z
|
||||
permalink: https://blog.giersig.eu/about/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
My path has been anything but straight. I started out as a Unix administrator, spent some time DJing minimal techno, studied Sociology in Constance, and somehow ended up managing a mountaineering gear shop. For nearly a decade I ran a communication agency — writing, editing, advising clients across industries. Then came years as a social worker, helping young people and refugees find their footing in Germany. These days I work in public relations for a district office, with a focus on social issues.
|
||||
|
||||
@@ -7,6 +7,11 @@ category:
|
||||
- slashpage
|
||||
updated: 2026-03-08T13:56:38.077Z
|
||||
permalink: https://blog.giersig.eu/now/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
This page is a [now page](https://nownownow.com/about), you should consider adding one if you have a website as well, inspiration comes [from here](https://slashpages.net/#defaults).
|
||||
|
||||
@@ -9,6 +9,11 @@ visibility: unlisted
|
||||
updated: 2026-03-08T14:11:03.969Z
|
||||
summary: A [where page](https://niqwithq.com/posts/where-are-you) is a place on the web to let others know about your current location.
|
||||
permalink: https://blog.giersig.eu/where/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
A [where page](https://niqwithq.com/posts/where-are-you) is a place on the web to let others know about your current location. Thanks to [Aaron Parecki](https://aaronparecki.com/) for ownyourswarm.
|
||||
|
||||
@@ -9,6 +9,11 @@ category:
|
||||
mpSyndicateTo:
|
||||
- https://blog.giersig.eu/
|
||||
permalink: https://blog.giersig.eu/photos/77a2d/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
Shall we play a game?
|
||||
|
||||
@@ -5,6 +5,11 @@ photo:
|
||||
alt: blue and lilac alpenglow
|
||||
category: mountains
|
||||
permalink: https://blog.giersig.eu/photos/941a3/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
alpenglow
|
||||
|
||||
@@ -9,6 +9,11 @@ syndication:
|
||||
mpSyndicateTo:
|
||||
- https://blog.giersig.eu/
|
||||
permalink: https://blog.giersig.eu/reposts/b383a/
|
||||
ai:
|
||||
textLevel: "0"
|
||||
codeLevel: "0"
|
||||
# aiTools: "Claude, ChatGPT, Copilot"
|
||||
# aiDescription: "Optional disclosure about how AI was used"
|
||||
---
|
||||
|
||||
The path is there, the weather is perfect, our bodies are carrying us, and yet nothing happens.
|
||||
|
||||
@@ -850,10 +850,43 @@ export default function (eleventyConfig) {
|
||||
});
|
||||
|
||||
// Filter AI-involved posts (ai-text-level > "0" or aiTextLevel > "0")
|
||||
const getAiMetadata = (data = {}) => {
|
||||
const aiMeta = (data && typeof data.ai === "object" && !Array.isArray(data.ai))
|
||||
? data.ai
|
||||
: {};
|
||||
|
||||
const textLevel = String(
|
||||
data.aiTextLevel
|
||||
?? data.ai_text_level
|
||||
?? data["ai-text-level"]
|
||||
?? aiMeta.textLevel
|
||||
?? aiMeta.aiTextLevel
|
||||
?? "0",
|
||||
);
|
||||
|
||||
const codeLevel = String(
|
||||
data.aiCodeLevel
|
||||
?? data.ai_code_level
|
||||
?? data["ai-code-level"]
|
||||
?? aiMeta.codeLevel
|
||||
?? aiMeta.aiCodeLevel
|
||||
?? "0",
|
||||
);
|
||||
|
||||
const tools = data.aiTools ?? data.ai_tools ?? aiMeta.aiTools ?? aiMeta.tools;
|
||||
const description =
|
||||
data.aiDescription
|
||||
?? data.ai_description
|
||||
?? aiMeta.aiDescription
|
||||
?? aiMeta.description;
|
||||
|
||||
return { textLevel, codeLevel, tools, description };
|
||||
};
|
||||
|
||||
eleventyConfig.addFilter("aiPosts", (posts) => {
|
||||
if (!Array.isArray(posts)) return [];
|
||||
return posts.filter((post) => {
|
||||
const level = post.data?.aiTextLevel || post.data?.["ai-text-level"] || "0";
|
||||
const { textLevel: level } = getAiMetadata(post.data || {});
|
||||
return level !== "0" && level !== 0;
|
||||
});
|
||||
});
|
||||
@@ -864,7 +897,8 @@ export default function (eleventyConfig) {
|
||||
const total = posts.length;
|
||||
const byLevel = { 0: 0, 1: 0, 2: 0, 3: 0 };
|
||||
for (const post of posts) {
|
||||
const level = parseInt(post.data?.aiTextLevel || post.data?.["ai-text-level"] || "0", 10);
|
||||
const { textLevel } = getAiMetadata(post.data || {});
|
||||
const level = parseInt(textLevel || "0", 10);
|
||||
byLevel[level] = (byLevel[level] || 0) + 1;
|
||||
}
|
||||
const aiCount = total - byLevel[0];
|
||||
|
||||
Reference in New Issue
Block a user