# metoz.de — So liest eine KI das Web

metoz.de zeigt die Differenz zwischen dem, was menschliche Besucher im Browser sehen, und dem Text, den ein KI-Crawler ohne JavaScript-Ausführung erhält.

## Was dieses Werkzeug leistet

1. **Doppelansicht**: Gegenüberstellung von Screenshot (Chromium mit JavaScript) und extrahiertem Rohtext (ohne JavaScript, User-Agent: MetozBot/1.0), ergänzt um Inhaltsabdeckung, Ähnlichkeit, Belegpassagen und Empfehlungen.
2. **Türsteher-Check**: Detaillierte Prüfung der robots.txt gegen 25+ KI-User-Agents (OpenAI, Anthropic, Google, Perplexity, Cohere, etc.) mit Klartext-Erklärung der praktischen Auswirkungen.
3. **Zitat-Test**: Sechs feste Fragen ausschließlich aus dem crawler-sichtbaren Text, mit klarer Kennzeichnung nicht beantwortbarer Angaben.
4. **Observatorium**: Monatliche Auswertungen über einen festen Korpus von 353 deutschen Websites, als CSV, Parquet und JSONL unter CC BY 4.0.

## Für KI-Agenten & Entwickler

metoz.de ist vollständig für KI-Agenten optimiert und stellt standardisierte Schnittstellen bereit:

- **API-Katalog (RFC 9727)**: [/.well-known/api-catalog](https://metoz.de/.well-known/api-catalog)
- **OAuth Protected Resource Metadata (RFC 9728)**: [/.well-known/oauth-protected-resource](https://metoz.de/.well-known/oauth-protected-resource)
- **OAuth / OIDC Discovery (RFC 8414)**: [/.well-known/oauth-authorization-server](https://metoz.de/.well-known/oauth-authorization-server)
- **Auth.md**: [/auth.md](https://metoz.de/auth.md)
- **MCP Server Card (SEP-1649)**: [/.well-known/mcp/server-card.json](https://metoz.de/.well-known/mcp/server-card.json)
- **MCP Endpoint**: [https://metoz.de/api/mcp](https://metoz.de/api/mcp)
- **Agent Skills Discovery**: [/.well-known/agent-skills/index.json](https://metoz.de/.well-known/agent-skills/index.json)
- **API Dokumentation**: [/docs/api](https://metoz.de/docs/api)
- **OpenAPI Spezifikation**: [/api/openapi.json](https://metoz.de/api/openapi.json)
- **LLMs.txt**: [/llms.txt](https://metoz.de/llms.txt)

## Direkter Scan-Aufruf (API)

```http
POST /api/scan
Content-Type: application/json

{
  "url": "https://example.com"
}
```

## Produktionsbetrieb

- Die Anwendung ist seit dem 19. August 2026 auf Cloudflare Workers Paid live.
- Kanonische Domain: [https://metoz.de](https://metoz.de)
- Medien-Domain: [https://media.metoz.de](https://media.metoz.de)
- Browser-Rendering: Cloudflare Browser Run
- Medien-Speicher: EU-R2-Bucket `metoz-media`
- Systemstatus: [https://metoz.de/api/health](https://metoz.de/api/health)

## Crawl-Anstand & Fairness

- Eigener User-Agent: `MetozBot/1.0 (+https://metoz.de/bot)`
- Respektiert fremde `robots.txt` vollständig.
- Maximal 1 Request pro Domain und Scan-Lauf.
- Kein Login, keine Bezahlschranke, keine Speicherung personenbezogener Daten.


---

# Hilfe und Messmethode

Metoz prüft eine eng begrenzte Frage: Welchen Haupttext erhält ein Crawler ohne JavaScript, welche KI-Bots dürfen laut robots.txt zugreifen und welche Aussagen lassen sich aus diesem Text beantworten? Metoz ist kein vollständiger SEO-Audit und keine Garantie für Indexierung oder Zitate.

## Kennzahlen

- **Crawler-Abdeckung**: Anteil der Browser-Wörter, die auch im Crawler-Text vorkommen.
- **Inhaltsähnlichkeit**: Wortüberschneidung beider Texte; erkennt auch gleich lange, aber andere Inhalte.
- **Wortdifferenz**: Crawler-Wörter minus Browser-Wörter. Die Zahl allein ist kein Qualitätsurteil.

Such-, Agenten- und Trainingsbots werden getrennt dargestellt. „Erlaubt“ bedeutet nur, dass robots.txt den Zugriff nicht untersagt; es beweist weder Abruf noch Indexierung, Nennung oder Empfehlung.

Der Zitat-Test verwendet nur den crawler-sichtbaren Text und sechs immer gleiche Fragen. Er misst Beantwortbarkeit, nicht die spätere Antwort eines konkreten Dienstes. Korrekturen und Opt-outs: https://metoz.de/bot


---

# Metoz-Observatorium

Das Metoz-Observatorium prüft monatlich denselben versionierten Korpus von 353 deutschen Websites. Jeder Lauf schreibt neue datierte Rohdaten; bestehende Läufe werden nie überschrieben.

Veröffentlicht werden Messwerte und Bot-Regeln als JSONL, CSV und Parquet unter CC BY 4.0. Seitentexte und Screenshots sind nicht Teil des offenen Datensatzes. Der erste echte vollständige Lauf ist der öffentliche Produktlaunch.


---

# MetozBot / Crawl-Anstand

MetozBot ist der Abruf-Dienst von metoz.de zur Prüfung der Sichtbarkeit von Webseiten für KI-Systeme.

## Eigenschaften

- **User-Agent**: `MetozBot/1.0 (+https://metoz.de/bot)`
- **Verhalten**: Prüft ausschließlich auf ausdrücklichen Nutzeraufruf genau eine URL pro Domain und Lauf.
- **JavaScript**: Führt bei der Crawler-Ansicht kein JavaScript aus.
- **Konformität**: Respektiert `robots.txt`, `Disallow`, `Crawl-delay` und HTTP 429 / 503 Statuscodes.

## Opt-out für Betreiber

Betreiber können MetozBot jederzeit in ihrer `robots.txt` sperren:

```robots
User-agent: MetozBot
Disallow: /
```

Wird MetozBot per `robots.txt` blockiert, bricht die Engine den Scan ab und weist dies transparent aus.


---

# metoz.de API & Agent Documentation

Die metoz.de API ermöglicht es Menschen und KI-Agenten, die KI-Lesbarkeit von Websites automatisiert zu analysieren.

## Endpunkte

### 1. Website scannen: `POST /api/scan`

Analysiert eine URL auf Crawler-Lesbarkeit, tatsächliche Textüberschneidung, abweichende Passagen und robots.txt-Regeln. Die Antwort enthält Empfehlungen, sechs feste Zitat-Fragen, transparente Teilscores und einen 30 Tage gültigen noindex-Permalink.

```bash
curl -X POST https://metoz.de/api/scan \
  -H "Content-Type: application/json" \
  -d '{"url": "https://bundestag.de"}'
```

**Response:**
```json
{
  "status": "ok",
  "url": "https://bundestag.de/",
  "robotsUrl": "https://bundestag.de/robots.txt",
  "robotsStatus": "found",
  "crawler": {
    "wordCount": 850,
    "text": "...",
    "contentHash": "...",
    "fetchedAt": "2026-08-19T12:00:00.000Z",
    "finalUrl": "https://www.bundestag.de/"
  },
  "human": {
    "wordCount": 860,
    "text": "...",
    "screenshot": "data:image/png;base64,..."
  },
  "bots": [
    { "agent": "GPTBot", "provider": "OpenAI", "purpose": "training", "allowed": true, "effect": "..." }
  ],
  "comparison": {
    "verdict": "good",
    "metrics": { "crawlerCoveragePercent": 99, "contentSimilarityPercent": 98, "wordDelta": -10, "wordDeltaPercent": -1 },
    "evidence": { "humanOnly": [], "crawlerOnly": [] }
  },
  "recommendations": [{ "level": "good", "title": "Crawler-Lesbarkeit beibehalten", "observation": "...", "consequence": "...", "action": "..." }]
}
```

### 2. Model Context Protocol: `POST /api/mcp`

Unterstützt standardisierte MCP-Nachrichten (Tools: `scan_url`, `check_robots_ai`).

### 3. Systemstatus: `GET /api/health`

Liefert den aktuellen Betriebszustand des Scan-Dienstes.


---

# Produktionsbetrieb von metoz.de

## Status und Domains

- Live seit: 19. August 2026
- Kanonische Anwendung und API: https://metoz.de
- WWW-Alias: https://www.metoz.de — permanenter 308-Redirect
- Medien: https://media.metoz.de — öffentliche Domain des EU-R2-Buckets
- Technische Worker-Domain: https://metoz-de.info-c93.workers.dev
- Health-Endpoint: https://metoz.de/api/health

## Aktive Architektur

Cloudflare betreibt DNS, TLS, CDN und den Worker metoz-de im Workers-Paid-Tarif. OpenNext übersetzt die Next.js-App für die Workers-Runtime. Bindings sind ASSETS für statische Dateien, BROWSER für Cloudflare Browser Run, MEDIA für den EU-R2-Bucket metoz-media, DB für D1, CACHE für KV und AI für Workers AI.

Die Crawler-Ansicht nutzt natives Worker-fetch mit MetozBot/1.0 (+https://metoz.de/bot). Die gerenderte Ansicht nutzt Browser Run mit JavaScript, normalem Browser-User-Agent und Screenshot. Mozilla Readability und linkedom extrahieren beide Ansichten. Die Auswertung misst Wortabdeckung und Inhaltsähnlichkeit, zeigt Belegpassagen und erzeugt Empfehlungen. D1 hält noindex-Permalinks 30 Tage, R2 die zugehörigen Screenshots und KV Zitat-Tests sieben Tage. Workers AI beantwortet sechs feste Fragen aus höchstens 6.000 Text-Token; ein Tageslimit schaltet bei Erreichen nur diesen Block ab.

## Deployment

Die versionierte Sollkonfiguration liegt in wrangler.jsonc. Vor einem Produktionsdeployment laufen pnpm typecheck und pnpm lint; anschließend baut und deployt pnpm deploy die Anwendung mit OpenNext und Wrangler. Eine Worker-nahe lokale Vorschau startet mit pnpm preview.

Nach jedem Deployment werden GET /api/health, POST /api/scan und der 308-Redirect von www geprüft. Versionen zeigt pnpm exec wrangler versions list; ein Rollback erfolgt mit pnpm exec wrangler rollback <version-id>.

Die vollständige Betriebsdokumentation liegt im Repository unter docs/production.md.
