Episoden / episode 10 / 49:17
Zehn Folgen Recap, Snacks, Content Pruning, AI Slop Code
Zehn Folgen: ein Rückblick, ein neues Format mit einem Thema pro Person und Snacks ab Folge 11. Christoph zeigt Content Pruning mit drei Filtern und einer Live-Demo in SEO Gets, Jens fängt AI Slop Code deterministisch ab: Lint-Regeln statt Instructions, zyklomatische Komplexität und eine eigene Regel in 200 Zeilen Node.js.
mit Jens Becker & Christoph Paterok
Begrüßung: zehn Folgen
Folge 10, und damit der erste kleine Meilenstein. Die ersten Minuten gehören deshalb einem Rückblick. Auf die Zahlen schauen beide zwar ab und zu, aber Motivation war das nie: Es ist für Jens wie für Christoph der erste Podcast überhaupt, und die Abmachung am Anfang war, das Ding einfach konsequent durchzuziehen, egal ob eine Folge gut oder schlecht läuft.
Jens' Learnings: Ein Thema für den Podcast aufzubereiten zwingt dazu, es noch einmal zu vertiefen. Die Infografiken haben sich dabei als Glücksgriff erwiesen, weil man die Knackpunkte wirklich auf den Tisch legen muss, die Folge leichter zu konsumieren ist und die Grafiken danach auf der Website landen. Und hinter den Kulissen wurde jede Woche ein weiterer Schritt der Vorbereitung, Aufnahme, Nachbereitung und Veröffentlichung halb automatisiert. Nicht autonom durch Agents, sondern als gezielte Unterstützung bei dem, was jede Woche gleich ist, damit die Zeit in die Themen fließt.
Christophs Learnings: Er setzt sich anders mit Themen auseinander, seit er sie nicht nur selbst nutzt, sondern jemandem zeigt. Und er lernt jedes Mal etwas aus Jens' Themen, mit denen er sich sonst nicht beschäftigen würde. Die Idee des Podcasts bleibt, zu zeigen, wie es im täglichen Betrieb wirklich aussieht, statt eine Stunde nach einem Release das dreistündige Video zu veröffentlichen. Ehrlich ist auch: Social Media ist schwerer als gedacht, und von den geplanten Blogartikeln zu jeder Folge ist bisher keiner erschienen. Dafür ist es ein Herzensprojekt ohne monetäres Ziel, und zu zweit macht es mehr Spaß. Ein großes Dankeschön geht an Peter, der die Videodateien fertig macht, das Intro gebaut hat und zuverlässig wie ein Zahnrad funktioniert.
Was sich ab Folge 11 ändert: ein Thema pro Person und Snacks
Der Podcast ist aus dem wöchentlichen Call der beiden entstanden, in dem sie sich über Projekte, Learnings und offene Fragen ausgetauscht haben. Die Idee war, genau das aufzunehmen, so als wäre keine Kamera an. Das Ziel ist erreicht, aber an einer Stellschraube wird jetzt gedreht: der Folgenlänge. Die meisten Folgen gingen bis knapp unter eine Stunde. Das Ziel sind künftig 30 bis 45 Minuten, also das, was man im Alltag noch mit Fokus hören kann, ohne den ganzen Tag auf dem Fahrrad zu sitzen.
Dafür gibt es statt zwei Themen pro Person nur noch eins, das dafür tiefer geht. An die Stelle des zweiten Themas treten die Snacks, abgeleitet von „snackable Content“: kurze, leicht verdauliche Punkte mit einem Limit von etwa zwei Minuten. Aktuelle News, etwas Gelesenes, ein Tool, das man dem anderen kurz zeigen will, ohne daraus ein Gespräch zu machen. Das passt zum Kerngedanken des Podcasts, sich gegenseitig zu updaten, und liefert nebenbei vielleicht Material für Social Media. Feedback, Kommentare und Nachrichten sind ausdrücklich erwünscht.
Content Pruning: löschen, zusammenlegen, aktualisieren
Bis vor ein paar Jahren war viel Content die SEO-Strategie: Longtail, viele Blogartikel, immer mehr Seiten. Das hat damals auch funktioniert. Die aktuellen Zahlen sagen etwas anderes: fokussieren, bestehenden Content aktualisieren, lieber löschen als liegen lassen. Christophs Satz dazu: Publish and forget verliert, publish and maintain gewinnt. Er gibt zu, selbst lange nach dem ersten Muster gearbeitet zu haben. Inhalte veröffentlicht, Besucher gebracht, und wenn es weniger wurde, fiel es nicht auf, weil man nur mit Produktion beschäftigt war. Dazu kommt, dass SEO und KI-Antworten immer mehr zusammenrutschen: Die AI Overviews sind einfach da, und der Besucher ist nicht mehr die KPI, sondern die Sichtbarkeit der Marke.
Die Datenbasis kommt aus einer Studie von Seer Interactive vom Juli 2026: 7.683 zitierte Seiten und 47.097 Zitationen in ChatGPT, Gemini und Perplexity. 75 Prozent der zitierten Seiten wurden in den letzten zwölf Monaten aktualisiert, 42 Prozent in den letzten zwölf Monaten veröffentlicht. Der Rest verteilt sich auf 13 Prozent bei ein bis zwei Jahren und 5 Prozent bei zwei bis drei Jahren. Untersucht wurden vier Branchen: Retail Energy, Pet Retail, Commercial Banking und Travel, jeweils mit den Unterschieden zwischen den drei Systemen. Der wichtige Punkt ist der Unterschied zwischen aktualisiert und veröffentlicht: Es geht nicht darum, ständig Neues zu publizieren, sondern alten Content frisch zu halten. Christophs unbelegte Vermutung nebenbei: Gemini und AI Overviews liegen sehr nah beieinander, das will er für eine der nächsten Folgen prüfen.
Wie findet man die Kandidaten? Christoph arbeitet mit drei Filtern, die drei Listen ergeben, und die Reihenfolge ist Absicht: vom Offensichtlichen hin zu dem, worüber man wirklich diskutieren muss. Wichtig vorab: Das sind Entscheidungslisten, keine Löschlisten. Die Über-uns-Seite hat wahrscheinlich kaum Impressions und bleibt trotzdem, weil Entitäten heute wichtig sind. Filter 1, unsichtbar: nicht indexiert oder in den letzten 16 Monaten kaum Impressions, und dazu kein Backlink und kein interner Link, der die Seite trägt. Der Backlink-Ausschluss ist Christoph fast am wichtigsten, denn ein Artikel mit drei Presseerwähnungen ohne Impressions wird nicht gelöscht. Wer löscht, gibt einen 410 zurück, also Gone statt eines 404 mit Not Found. Wer zusammenlegt, setzt einen 301. Filter 2, kannibalisiert: ein Keyword in der Search Console anklicken, und wenn mehrere Seiten signifikant Impressions und Klicks bekommen, gibt es ein Problem. Filter 3, zu weit weg: viele Impressions, aber die Seite passt nicht zu Produkt und Conversion. Lieber 200 Besucher am Tag weniger, die nie Kunden werden, als auf 10 oder 20 zu verzichten, die es werden könnten. Für Christoph steckt dahinter auch, wieder Herr über den eigenen Content zu werden, für den man verantwortlich ist, seit man ihn ins Netz gestellt hat.
Die Demo läuft in SEO Gets, diesmal ganz bewusst, weil die kostenlose Version schon so wertvoll ist, dass Christoph inzwischen fast nur noch damit arbeitet. Als Seite dient Auto Auction Atlas, weil sie mehr Seiten im Index hat als das Regenwasser-Projekt und ohnehin aufgeräumt werden muss. Filter 1: Unter Indexing mit dem Filter Not Indexed stehen 45 nicht indexierte Seiten, einige davon mit Impressions in den letzten 30 Tagen, die man sich genauer anschauen sollte, weil Google sie irgendwann aussortiert hat. Der letzte Crawl ist direkt sichtbar, etwa beim Guide zur Plattformauswahl vor 107 Tagen, für Christoph ein klarer Löschkandidat. Danach unter Pages nach Impressions sortieren, den Zeitraum auf 16 Monate stellen, und die Seiten mit ein bis zwei Impressions sind schnell entschieden. Filter 2: In der bezahlten Version gibt es unter Opportunities den Report Keyword Cannibalization, der Seiten listet, die für dasselbe Keyword Impressions bekommen, im Beispiel B2B Auction mit zwei Seiten auf ähnlicher Position. Da muss ein Owner für das Keyword festgelegt werden, dann rückt die Seite vermutlich in die Top 3. Manuell geht das über Queries, Expand, Query anklicken. Ein Hinweis dazu: lieber mit 14 oder 28 Tagen arbeiten als mit 16 Monaten, weil in einem langen Zeitfenster ein längst erledigter Owner-Wechsel noch wie ein Problem aussieht. Filter 3 bleibt Handarbeit, aber die Liste ist nach den ersten beiden Schritten deutlich kürzer. Einen Effekt sollte man nach 60 bis 90 Tagen sehen.
Bleibt die Frage, wie man Aktualität zeigt. Christophs Antwort: strukturierte Daten, aber nicht nur im Code, sondern sichtbar auf der Seite. Zuletzt aktualisiert, zuletzt geprüft, und in extremen Fällen sogar der Termin der nächsten Prüfung. Bei einem gemeinsamen Kunden von Jens und Christoph gibt es eine Seite, die aus bestimmten Gründen alle zwei Tage aktualisiert wird, und dort steht das nächste Prüfdatum direkt auf der Seite. Auch „zuletzt geprüft“ ist ein Signal für Frische: Vielleicht hat sich nichts geändert, aber jemand hat es kontrolliert.
Jens' Rückfrage: SEO Gets bezieht nur Daten aus der Google Search Console, also klassische Suche und AI Overviews. Was aus ChatGPT oder Perplexity kommt, fehlt in dieser Entscheidungsgrundlage. Christoph würde das mit einfließen lassen und sich dafür den Bot-Traffic anschauen, ob es Seiten gibt, die bei ChatGPT eine große Rolle spielen, in der Search Console aber kaum Impressions haben. Beim gemeinsamen Kunden, wo gerade genau so ein Aufräumprozess läuft, lässt sich das prüfen. Die Top-Performer aus LLM-Zugriffen sollten auf jeden Fall geschützt werden.
AI Slop Code: deterministisch statt Instructions
AI Slop Code ist minderwertiger, teils ungetesteter, redundanter Code aus KI-Generatoren. Er tut meistens, was er soll, bringt aber Architektur-Anti-Patterns ein oder dupliziert Logik, die es schon gibt. Die Zahlen dazu liefert GitClear, die zwischen 2023 und 2026 über 600 Millionen Codeänderungen analysiert haben: Die Menge an dupliziertem Code ist um bis zu 81 Prozent gestiegen, der Anteil umgebauter statt neu geschriebener Zeilen ist eingebrochen, und Agents duplizieren immer häufiger, statt bewusst zu refactoren. Jens nennt das eine Herausforderung, die jetzt gelöst werden muss, wo immer mehr Code von KI kommt.
Es gibt zwei Wege, das anzugehen. Der erste sind Instructions: Regeln in AGENTS.md, CLAUDE.md oder Skills, wie der Code auszusehen hat. Möglichst wenig Kommentare, nicht zu komplex, so simpel wie möglich. Gerade die neuesten Opus-Modelle schreiben Code, Doku und Kommentare oft sehr aufgebläht, wo ein oder zwei Sätze reichen würden, und jede zusätzliche Zeile kostet langfristig Geld. Das Problem: Instructions sind probabilistisch. Der Agent liest sie, oder er liest sie nicht, oder er liest sie und wendet sie nicht an, weil das Kontextfenster schon zu voll ist. Für Jens sind sie deshalb der Fallback. Der Hauptweg ist deterministisch: Lint-Regeln, Formatierungsskripte, Type-Checking. Immer das gleiche Ergebnis, praktisch kostenlos, weil keine Tokens fließen, und es läuft jedes Mal. Auf Christophs Nachfrage: ja, beides, aber die Instructions nicht überladen, ein paar Regeln zu Kommentaren gehören trotzdem in die CLAUDE.md.
Wo laufen die Skripte? Bei Jens vor allem in der CI, also in GitHub Actions bei jedem Pull Request und jedem Commit auf main. Schlägt Formatierung, Type-Check oder eine Lint-Regel an, ist der Pull Request blockiert, und der Agent muss erst fixen. Das ist eine Praxis, die es lange vor KI gab, sie wird jetzt nur wichtiger. Dazu kommen Pre-Commit-Hooks, die vor dem Commit laufen, bei Jens unter anderem für das Schema der Commit-Nachrichten. Die Regel dahinter: Wann immer möglich deterministisches Linting statt Agent-Instructions.
Ein Beispiel für so eine Regel ist complexity in oxlint. Sie misst die zyklomatische Komplexität, eine jahrzehntealte Metrik, die Jens noch aus dem Studium kennt: die Anzahl linear unabhängiger Pfade durch eine Funktion. Jedes if, while oder for erhöht den Wert. Je höher, desto mehr Entscheidungen und desto höher das Fehlerrisiko. Über einer Schwelle heißt die Empfehlung: refactoren. Jens hat die Regel am Morgen der Aufnahme in seinem Payload-Plugins-Repository installiert, die Schwelle auf 40 gesetzt und zwei Funktionen darüber gefunden. Die hat er in einem Pull Request refactoren lassen, und dabei kam ein Edge-Case-Bug ans Licht, der nicht beabsichtigt war und direkt gefixt wurde. Nicht geplant, aber ein guter Beleg dafür, dass niedrige Komplexität sich auszahlt. Daneben gibt es viele weitere Lint-Regeln, gerade für TypeScript, die auf lange Sicht Geld sparen.
Wenn kein Linter die Regel kennt, schreibt man sie selbst. Jens ist aufgefallen, dass Claude bei Änderungen gern in Kommentare schreibt, was der Code vorher gemacht hat und warum er jetzt anders ist, mit Datum und allem. Solche Änderungshistorie gehört nicht in Kommentare, sondern in Git. Dazu kamen Floskeln in Doku und Kommentaren. Daraus ist eine eigene Lint-Regel geworden: rund 200 Zeilen Node.js, läuft bei jedem Pull Request. Seine Empfehlung: Wer so ein Muster entdeckt, schreibt lieber eine Regel dafür, statt in die CLAUDE.md „bitte verwende diese Begriffe nicht“ zu schreiben. Ausführen lässt sie sich im Pre-Commit-Hook oder in der CI.
Christoph nimmt daraus mit, dass sich Linting auch auf Content übertragen lässt: zu komplex, Entitäten fehlen in den Absätzen, Marketing-Blabla. Jens stimmt zu: Agent Skills sind ein geniales Konzept, aber für manche Prüfungen ist ein deterministisches Skript, das der Agent fast kostenlos ausführen kann, die bessere Lösung. Und bei Christoph selbst ist die Menge an Code durch KI enorm gestiegen. Früher gab es einen festen Stack mit Hugo für Content-Websites, heute baut er Dinge wie ein eigenes kleines CRM für Kundenanfragen, Follow-ups und den Umsatz in der Pipeline. Bewusst in HTML, CSS und Vanilla JavaScript ohne Framework, lokal, damit er selbst noch durchsteigt. Seine erste Anweisung seit Monaten: pragmatisch bleiben, Komplexität reduzieren, modular bauen, Komplexität kann man später immer noch einbringen. Jens findet es schade, dass man das den Modellen immer noch sagen muss. Christophs Erklärung: Tokens sind Umsatz.
Outro
Folge 10 ist im Kasten. Die nächste Folge kommt mit Snacks und hoffentlich mit ein paar Social-Media-Videos. Ob die nächste Jubiläumsfolge bei 50 stattfindet, wird noch diskutiert. Kommentare auf allen Plattformen, die Website und die Social-Media-Kanäle sind wie immer offen für Feedback.







