Skip to content

AI Feed - visibility for AI agents

AI Feed stellt Shop-Inhalte als Markdown bereit, optimiert für Sprachmodelle und Shopping-Agenten. Ein HTTP-Client sendet Accept: text/markdown (oder hängt ?output_format=md an die URL an) und erhält statt der gerenderten HTML-Seite sauberes Markdown mit YAML-Metadaten.

KI-Agenten (ChatGPT Shopping, Perplexity, Gemini, eigene LLM-Crawler) überspringen zunehmend HTML und fragen direkt nach einer “sauberen” Version der Seite. Klassisches HTML-Scraping ist fehleranfällig, teuer und verliert strukturierte Daten. AI Feed dreht das Verhältnis um: Der Shop veröffentlicht selbst eine maschinenlesbare Version unter derselben URL wie die für Menschen bestimmte.

Das Modul ist nach dem Update auf 1.11.0 standardmäßig aktiv. So deaktivieren Sie es:

add_filter('polski/ai_feed/enabled', '__return_false');

Einstellungen gespeichert in der Option polski_ai_feed:

SchlüsselStandardBeschreibung
enabledtrueHauptschalter
post_types['post', 'page', 'product']Inhaltstypen, die als Markdown ausgeliefert werden

Markdown wird in zwei Fällen zurückgegeben:

  1. Der Accept-Header enthält text/markdown (mit Ausschluss von q=0).
  2. Die URL enthält das Query-Argument ?output_format=md.

In beiden Fällen trägt die Antwort:

Content-Type: text/markdown; charset=UTF-8
Vary: Accept

Reguläre Besucher erhalten weiterhin standardmäßiges HTML. Berechtigungsregeln (read_post, Passwortschutz, Entwürfe) bleiben erhalten.

Einzelne HTML-Ansichten enthalten im <head>:

<link rel="alternate" type="text/markdown" href="https://shop.test/product/t-shirt/?output_format=md" />

Crawler und KI-Agenten können die Markdown-Version finden, ohne die URL-Konvention kennen zu müssen.

Auf den Listenansichten von Beiträgen, Seiten und Produkten erscheint neben “Ansehen” eine Aktion “View AI Version”, die dasselbe Markdown öffnet, das ein KI-Agent sehen würde - praktisch zum Testen und zur Vorschau.

Was eine Produkt-Markdown-Antwort enthält

Section titled “Was eine Produkt-Markdown-Antwort enthält”

Für ein WooCommerce-Produkt enthält die Antwort:

YAML-Front-Matter

---
title: "Basic T-shirt"
permalink: "https://shop.test/product/t-shirt/"
sku: "TS-001"
gtin: "5901234567890"
product_type: "simple"
currency: "PLN"
price: "49,99 zł"
regular_price: "59,99 zł"
sale_price: "49,99 zł"
in_stock: "true"
on_sale: "true"
modified: "2026-04-30T12:00:00+02:00"
categories: ["T-shirts"]
---

Aufzählungsliste “Product details”

  • SKU und GTIN/EAN
  • Bruttopreis, regulärer Preis, Aktionspreis
  • Steuerklasse (VAT)
  • Niedrigster Preis der letzten 30 Tage (Omnibus)
  • Lieferzeit
  • Lagerbestand und Verfügbarkeit
  • Gewicht und Abmessungen
  • Marke, Hersteller
  • Verantwortliche Person (GPSR)

Vollständige Produktbeschreibung, in Markdown konvertiert.

---
title: "Basic T-shirt"
permalink: "https://shop.test/product/t-shirt/"
sku: "TS-001"
price: "49,99 zł"
in_stock: "true"
---
# Basic T-shirt
Cotton t-shirt with classic cut.
## Product details
- **SKU:** TS-001
- **GTIN/EAN:** 5901234567890
- **Price:** 49,99 zł
- **Tax class:** Standard
- **Lowest price (last 30 days):** 45,00 zł
- **Delivery time:** 1-2 days
- **Availability:** In stock
- **Weight:** 0.2 kg
## Description
Full product description from Gutenberg blocks, including lists, tables, and headings.

Gemäß dem Standard llmstxt.org stellt der Shop eine Datei /llms.txt im Root der Domain bereit. KI-Agenten schauen dort zuerst nach, um die Struktur der Website zu erkennen, ohne URL-Konventionen zu kennen.

Terminal window
curl https://shop.test/llms.txt

Antwort (Markdown):

# Your store
> An online store for Polish goods.
## Legal
- [Terms](https://shop.test/terms/?output_format=md): Terms and conditions
- [Privacy](https://shop.test/privacy/?output_format=md): Privacy policy
- [Returns](https://shop.test/returns/?output_format=md): Returns and withdrawal policy
## Shop
- [Shop](https://shop.test/shop/): Storefront
## Product categories
- [T-shirts](https://shop.test/category/t-shirts/)
- [Hoodies](https://shop.test/category/hoodies/)

Standardinhalt

  • Titel und Beschreibung der Website (aus get_bloginfo('name'), get_bloginfo('description'))
  • Abschnitt “Legal” mit ?output_format=md-Links zu den rechtlichen Seiten (Terms, Privacy, Returns, Complaints) - nur wenn diese Seiten existieren
  • Abschnitt “Shop” mit der WooCommerce-Shop-Seite
  • “Product categories” mit den 20 am stärksten befüllten Kategorien (sortiert nach Produktanzahl)

Deaktivieren

add_filter('polski/ai_feed/llms_txt_enabled', '__return_false');

Abschnitte anpassen

add_filter('polski/ai_feed/llms_txt_sections', static function (array $sections): array {
$sections['Resources'] = [
['Blog', home_url('/blog/'), 'Latest posts'],
['FAQ', home_url('/faq/')],
];
return $sections;
});

Kategorielimit

add_filter('polski/ai_feed/llms_txt_category_limit', static fn () => 50);
FilterZweck
polski/ai_feed/enabledHauptschalter (bool)
polski/ai_feed/post_typesListe der Inhaltstypen (string[])
polski/ai_feed/post_markdownEndgültiges Markdown für einen Beitrag/eine Seite
polski/ai_feed/product_markdownEndgültiges Markdown für ein Produkt
polski/ai_feed/product_factsListe von [label, value]-Paaren im Abschnitt “Product details”
polski/ai_feed/password_requiredMarkdown-Text bei passwortgeschütztem Inhalt
polski/ai_feed/llms_txt_enabledKill-Switch für /llms.txt (bool)
polski/ai_feed/llms_txt_sectionsMap aus [heading => list] für das Manifest
polski/ai_feed/llms_txt_category_limitMaximale Anzahl gelisteter Produktkategorien (int)
add_filter('polski/ai_feed/post_types', static function (array $types): array {
$types[] = 'recipe';
return $types;
});

Beispiel - ein eigenes Feld zur Produktausgabe hinzufügen

Section titled “Beispiel - ein eigenes Feld zur Produktausgabe hinzufügen”
add_filter('polski/ai_feed/product_facts', static function (array $facts, WC_Product $product): array {
$color = $product->get_attribute('pa_color');
if ($color !== '') {
$facts[] = ['Color', $color];
}
return $facts;
}, 10, 2);

Ersetzt das mein Theme für reguläre Besucher?

Nein. HTML wird standardmäßig zurückgegeben. Markdown wird nur an Clients ausgeliefert, die es über Accept oder den URL-Parameter anfordern.

Werden passwortgeschützte Seiten offengelegt?

Nein. Wenn eine Seite ein Passwort erfordert, gibt AI Feed einen kurzen Markdown-Hinweis statt des vollständigen Inhalts zurück.

Werden Entwürfe unterstützt?

Ja, für Benutzer mit Bearbeitungsrechten. Die Admin-Aktion “View AI Version” verwendet Vorschau-URLs für Entwürfe und geplante Beiträge.

Kann ich eigene Inhaltstypen hinzufügen?

Ja, über den Filter polski/ai_feed/post_types. Standardmäßig werden post, page und product unterstützt.

Funktioniert es mit HPOS und Block-Checkout?

Ja. Das Modul arbeitet auf der Ebene der Produktansicht, unabhängig von der Bestellspeicherung (HPOS) und dem Checkout (Blocks).