Sechs gebürstete Aluminium-Tags hängen an einem Stahldraht über Eichentisch, jeder Tag mit eigenem geätztem Muster, weiches Tageslicht.
Extension · moselwal/structured-content

structured-content — semantische Metadaten, die vererbt werden.

AI-Context-Annotations (Audience, Tone, Channels) auf Seiten- und Content-Ebene, die durch die Page-Hierarchie cascaden — mit typed Content-Relationships, Confidence-Scoring und JSON-LD-Generation als Output. Das Fundament für semantisch saubere TYPO3-Plattformen.

Das Problem

Inhalte ohne Kontext sind für KI halb leer.

Mit structured-content

  • AI-Context-Felder direkt im Seiten- und Content-Element-Backend
  • Vererbung durch die Hierarchie — Setzen auf einer Parent-Seite cascadet nach unten
  • Typisierte Content-Relationships mit Confidence-Score
  • JSON-LD-Generation automatisch im Frontend
  • Channel-aware Field-Restrictions
  • CLI-Tools für Bulk-Annotation

Bisher

  • Audience und Tone leben in Brand-Guidelines, nicht im CMS
  • JSON-LD wird händisch in Templates eingestreut
  • Channel-Awareness fehlt — derselbe Inhalt geht ungefiltert in alle Kanäle
  • Content-Relationships nur über lose Verlinkung

Vier Bausteine

JSON-LD im Frontend

Schema.org-Markup wird automatisch aus den Annotationen generiert — ohne dass im Template etwas eingestreut werden muss.

Typed Content-Relationships

Beziehungen zwischen Content-Elementen sind typisiert (z.B. "erklärt", "erweitert", "widerspricht") mit Confidence-Score — KI-Systeme nutzen das für kohärentere Antworten.

Hierarchische Vererbung

Annotation auf einer Parent-Seite gilt automatisch für alle Kinder, sofern dort nicht überschrieben. Aufwand pro Inhalt sinkt drastisch.

AI-Context-Felder

Audience (Customer/Partner/Internal/Developer), Tone (Informational/Promotional/Technical/Legal), Channels (Web/AI-Agent/Voice/Social) — als TCA-Standardfelder.

Verfügbarkeit: Coming soon — öffentliche Veröffentlichung in Vorbereitung

Die öffentliche Bereitstellung als Composer-Paket wird derzeit vorbereitet. Wenn Sie den Baustein bereits in Ihrer TYPO3-Plattform einsetzen möchten, sprechen Sie uns über das Kontaktformular an — wir liefern aktuell im Rahmen von Plattform-Engagements aus.

Architektur

Classes/
├── Domain/          # Annotation-Modelle, Beziehungstypen, Contracts
├── Application/     # Context-Resolution, Relationship-Services
├── Infrastructure/  # Repositories, JSON-LD-Builder, Context-Resolver
└── Presentation/    # Controller, Event-Listener

 

Datenbank-Tabellen

TabelleZweck
tx_structuredcontent_relationInhaltsbeziehungen
pages (erweitert)ai_context_*-Felder für Audience, Tone, Channels
tt_content (erweitert)ai_context_*-Felder für Element-Metadaten

Schema.org-Generator-Stack

Alle Generatoren in Classes/Infrastructure/SchemaOrg/ implementieren SchemaGeneratorInterface, werden via Service-Tag structured_content.schema_generator registriert und nach priority gerendert (höher = früher im JSON-LD-Block).

GeneratorPriority@typeTrigger
BreadcrumbListSchemaGenerator90BreadcrumbListJede Page mit Rootline
ProfilePageSchemaGenerator75ProfilePage + Person + hasPart/autor/{slug}-Routing-Argument resolved
ReviewSchemaGenerator68ReviewPages mit Testimonials-CB
PodcastEpisodeSchemaGenerator65PodcastEpisodePodcast-Plugin Detail-View (mit actor[] für Hosts + Guests)
PodcastSeriesSchemaGenerator60PodcastSeriesPodcast-Plugin List-View
SoftwareApplicationSchemaGenerator55SoftwareApplicationPages mit is_software_application
ArticleSchemaGenerator50Article / BlogPostingArticle-Pages (mit articleSection aus sys_category)
FaqSchemaGenerator45FAQPagePages mit FAQ-CB
HowToSchemaGenerator45HowToPages mit Steps-CB
WebPageSchemaGenerator40WebPageFallback für alle Pages
WebSiteSchemaGenerator30WebSiteSite-Root + Sub-Sites
OrganizationSchemaGenerator25OrganizationSite-weit aus Settings
ServiceSchemaGenerator20ServicePages mit Service-CB (skipped wenn SoftwareApplication owned)
ProfessionalServiceSchemaGenerator20ProfessionalServiceService-Pages mit Provider-Org
PackagesGridEnterpriseServiceSchemaGenerator18Service-VariantenPackages-Grid-CB
PackagesGridProductSchemaGenerator18ProductPackages-Grid-CB
ProductSchemaGenerator15ProductPages mit Product-CB
PersonSchemaGenerator10PersonAuthor-Embedding in Article
AutoDetectSchemaGenerator5dynamicTCA-driven Mapping

Builder und Traits

Application/Service/PersonSchemaBuilder.buildFromRow($personRow) emittet Person mit worksFor[], sameAs[] (mit Label|URL-Pipe-Format), knowsAbout, knowsLanguage und image. PersonRoutingArgumentTrait resolved den person-Slug aus den _routingArguments der Person-Plugin-Detail-View. PodcastFeedCacheReaderTrait liest gecachte Feed-Items für Podcast-Schemata ohne Re-Fetch. SanitizesSchemaTrait filtert leere und nicht-JSON-konforme Werte. ContextAndRelationshipsTrait hängt AI-Context und Relationships an den Schema-Output.

Repositories

AuthoredPagesRepository.findByPersonUid findet Pages, die tx_structuredcontent_author_records mit der Person verknüpfen (für Person.hasPart). CategoryRepository.findByPageUid liest sys_category-Records via sys_category_record_mm (für Article.articleSection). EpisodeGuestsRepository liefert Bulk episode_slug → Person[] für PodcastEpisode.actor.

Article-Schema-Erweiterungen (AI Disclosure, Reading Time, Language Fallback)

AI Content Disclosure (v1.5.10+)

Article-Schema enthält bei AI-getaggten Hero-Bildern image: {creator: {SoftwareApplication, name}, creditText: "AI-generated"}. Damit ist die EU-AI-Act-Artikel-50-Disclosure direkt im JSON-LD verankert. Pflege über die TCA-Felder aus moselwal/content-provenance (tx_provenance_origin, tx_provenance_ai_system).

Reading Time (v1.5.9+)

Article-Schema enthält wordCount und timeRequired (ISO-8601 PT*M) — byte-identisch zur Frontend-Reading-Time-Badge (200 Wörter pro Minute). Vereinheitlicht die Reading-Time-Anzeige zwischen Markup und User-Sicht.

Language-Fallback in Schema-Generators (v1.5.7+)

Translation-aware: Default-Sprache-Records werden geladen und EN-Translations overlay'd. Der Schema-Output funktioniert auch unter fallbackType: fallback ohne Lücken — unvollständige Lokalisierungen führen nicht mehr zu fehlendem Schema-Markup.

Relationship-Type-Mappings (Schema.org)

Sys-Category-Mapping

Erweiterung von sys_category um ein slug-Feld (auto aus Titel) für Filter-URLs und um eine RTE-Description für Kategorie-Hero-Blöcke. Im Article-JSON-LD wird die Kategorie als articleSection emittiert.

CLI-Befehle

vendor/bin/typo3 structured-content:missing-context   # Seiten ohne AI-Kontext finden
vendor/bin/typo3 structured-content:export-relations   # Beziehungen als JSON exportieren
vendor/bin/typo3 structured-content:validate-channels  # Channel-Konfiguration prüfen

 

Konfiguration

AI-Context-Felder werden in den TYPO3-Formularen für Seiten und Inhaltselemente ergänzt. Default-Werte und Vererbungsverhalten konfigurieren Sie über die Site Settings.

Voraussetzungen

Optionale Abhängigkeiten

PaketTypZweck
moselwal/content-provenanceOptionalIntegritätsprüfung für Inhalte
moselwal/business-agentOptionalInhaltszugriff für KI-Agenten
moselwal/devDevGeteiltes QA-Tooling

Die Architektur folgt strikt der DDD-4-Layer-Trennung; Layer-Verstöße werden über deptrac in CI verhindert.

Quellcode & Doku

TYPO3 Extension Repository

Nicht im offiziellen TER — die öffentliche Distribution über Composer wird vorbereitet (coming soon).

Composer-Paket

Veröffentlichung als moselwal/structured-content in Vorbereitung. Coming soon.

Repository

Quellcode und Issue-Tracker werden mit der öffentlichen Veröffentlichung freigeschaltet. Coming soon.

Mirror

Öffentlicher Mirror und Pull-Request-Workflow folgen mit der Veröffentlichung. Coming soon.

Nächster Schritt

Hilfe bei der Integration?

structured-content ist Open Source und für Selbst-Integratoren gedacht. Für AI-Readiness als Komplettpaket schauen Sie sich gerne unser AI-Ready CMS as a Service an.

AI-Readiness besprechen

Oder direkt schreiben: kontakt@moselwal.de

Setzen wir ein bei …

Dieses Paket ist Teil der Plattform-Linie zu AI-Ready CMS und AI-Ready Commerce — als semantischer Layer, der Inhalte für Retrieval-Systeme und Agenten lesbar macht. In der betreuten Variante: AI-Ready CMS as a Service.