Analysierte URL
https://carrero.es
KI-Ready Score
Befriedigend
von 100
Token-Einsparung
Score-Aufschlüsselung
Emerging Protocols
0 von 3 erkanntWell-known-Endpunkte, nach denen KI-Agenten suchen. Erkannt bedeutet, dass ein Agent Ihren Dienst automatisch finden und verbinden kann.
-
OAuth Discovery RFC 8414
/.well-known/oauth-authorization-server -
MCP Server Card Anthropic
/.well-known/mcp.json -
A2A Agent Card Google
/.well-known/agent.json
Ihre Seite hat ein niedriges Verhältnis von tatsächlichem Inhalt zum gesamten HTML. Ein Großteil des Seitengewichts besteht aus Markup, Skripten oder Styles statt Inhalt.
So implementieren Sie es
Verlagern Sie CSS in externe Stylesheets, entfernen Sie Inline-Styles, minimieren Sie JavaScript und stellen Sie sicher, dass sich das HTML auf die Inhaltsstruktur konzentriert.
Ihre Website unterstützt kein Markdown for Agents. Dieser Cloudflare-Standard ermöglicht KI-Agenten, Inhalte im Markdown-Format anzufordern und reduziert den Token-Verbrauch um ~80%.
So implementieren Sie es
Implementieren Sie eines oder mehrere: (1) Auf Accept: text/markdown mit Markdown-Inhalt antworten. (2) .md-URLs bereitstellen (z.B. /seite.md). (3) <link rel="alternate" type="text/markdown">-Tags hinzufügen. (4) Link-HTTP-Header für Markdown-Erkennung hinzufügen.
Keine Content-Signal-Direktiven gefunden. Diese teilen KI-Agenten mit, wie sie Ihre Inhalte verwenden dürfen (Suchindexierung, KI-Eingabe, Trainingsdaten). Der empfohlene Ort ist robots.txt.
So implementieren Sie es
Fügen Sie Content-Signal zu Ihrer robots.txt hinzu: User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no. Sie können es auch als HTTP-Header bei Markdown-Antworten hinzufügen.
Ihre Seite stützt sich stark auf <div>-Elemente. Semantische Elemente wie <section>, <nav>, <header>, <footer> und <aside> bieten eine sinnvolle Struktur für KI-Agenten.
So implementieren Sie es
Ersetzen Sie generische <div>-Container durch passende semantische Elemente. Verwenden Sie <section> für thematische Gruppen, <nav> für Navigation, <header>/<footer> für Seiten-/Abschnittskopf und -fußzeilen.
Der Hauptinhalt erscheint spät im HTML-Dokument. KI-Agenten gewichten Inhalte, die früh erscheinen, möglicherweise höher.
So implementieren Sie es
Strukturieren Sie Ihr HTML so um, dass <main>- oder <article>-Inhalt vor Seitenleisten und ergänzenden Inhalten erscheint.
Ihre Überschriftenstruktur hat Probleme (übersprungene Ebenen oder mehrere h1-Tags). Eine saubere Hierarchie hilft KI-Agenten, die Inhaltsorganisation zu verstehen.
So implementieren Sie es
Stellen Sie sicher, dass Sie genau ein <h1> pro Seite haben und die Überschriften einer sequentiellen Reihenfolge folgen: h1 > h2 > h3. Überspringen Sie keine Ebenen (z.B. h1 direkt zu h3).
Fehlende oder unvollständige Open-Graph-Tags. OG-Tags helfen KI-Agenten (und sozialen Plattformen), Titel, Beschreibung und Bild Ihrer Seite zu verstehen.
So implementieren Sie es
Fügen Sie og:title, og:description und og:image Meta-Tags zum <head> Ihrer Seite hinzu.
Viele Elemente haben Inline-Style-Attribute. Diese erzeugen Rauschen für KI-Agenten bei der Inhaltsextraktion.
So implementieren Sie es
Verlagern Sie alle Inline-Styles in CSS-Klassen in Ihrem Stylesheet. Verwenden Sie Utility-CSS-Frameworks wie Tailwind, wenn Sie viele individuelle Styles benötigen.
Último Artículo ## [La IA no está destruyendo empleo: está cambiando el precio del trabajo](https://carrero.es/la-ia-no-esta-destruyendo-empleo-esta-cambiando-el-precio-del-trabajo/) 9 de junio de 2026 Durante los últimos meses he leído demasiadas veces que la inteligencia artificial va a destruir el empleo sofisticado. Abogados, programadores, analistas, diseñadores, redactores, consultores, financieros, administradores de sistemas, … todos … [Leer más](https://carrero.es/la-ia-no-esta-destruyendo-empleo-esta-cambiando-el-precio-del-trabajo/)
Carrero.es es el sitio personal de David Carrero Fernández-Baillo [Saltar al contenido](https://carrero.es/#content "Saltar al contenido") Último Artículo ## [La IA no está destruyendo empleo: está cambiando el precio del trabajo](https://carrero.es/la-ia-no-esta-destruyendo-empleo-esta-cambiando-el-precio-del-trabajo/) 9 de junio de 2026 Durante los últimos meses he leído demasiadas veces que la inteligencia artificial va a destruir el empleo sofisticado. Abogados, programadores, analistas, diseñadores, redactores, consultores, financieros, administradores de sistemas, … todos … [Leer más](https://carrero.es/la-ia-no-esta-destruyendo-empleo-esta-cambiando-el-precio-del-trabajo/) ### [Vivimos dentro de dos inflaciones distintas](https://carrero.es/vivimos-dentro-de-dos-inflaciones-distintas/) 2 de junio de 2026 [Ver artículo](https://carrero.es/vivimos-dentro-de-dos-inflaciones-distintas/) ### [Amazon no está creciendo: está ocupando capas enteras de la economía](https://carrero.es/amazon-no-esta-creciendo-esta-ocupando-capas-enteras-de-la-economia/) 26 de mayo de 2026 [Ver artículo](https://carrero.es/amazon-no-esta-creciendo-esta-ocupando-capas-enteras-de-la-economia/) ### [Open source, IA y confianza: cuando el código abierto no basta](https://carrero.es/open-source-ia-y-confianza-cuando-el-codigo-abierto-no-basta/) 22 de mayo de 2026 [Ver artículo](https://carrero.es/open-source-ia-y-confianza-cuando-el-codigo-abierto-no-basta/) ### [DirtyFrag, Copy Fail y el aviso que Linux no puede ignorar](https://carrero.es/dirtyfrag-copy-fail-aviso-que-linux-no-puede-ignorar/) 19 de mayo de 2026 [Ver artículo](https://carrero.es/dirtyfrag-copy-fail-aviso-que-linux-no-puede-ignorar/) ### [Bloquear IPs por el fútbol es una barbaridad técnica que ya afecta a todos](https://carrero.es/bloquear-ips-por-el-futbol-es-una-barbaridad-tecnica-que-ya-afecta-a-todos/) 16 de mayo de 2026 [Ver artículo](https://carrero.es/bloquear-ips-por-el-futbol-es-una-barbaridad-tecnica-que-ya-afecta-a-todos/) ### [Copy Fail y la falsa sensación de seguridad en nuestros sistemas](https://carrero.es/copy-fail-falsa-sensacion-seguridad-nuestros-sistemas/) 12 de mayo de 2026 [Ver artículo](https://carrero.es/copy-fail-falsa-sensacion-seguridad-nuestros-sistemas/) 1[2](https://carrero.es/?query-22506824-page=2)[3](https://carrero.es/?query-22506824-page=3)…[521](https://carrero.es/?query-22506824-page=521) [Siguente](https://carrero.es/?query-22506824-page=2) Buscar:
Laden Sie diese Datei als /index.md auf Ihren Server hoch, damit KI-Agenten auf eine saubere Version Ihrer Seite zugreifen können. Sie können auch die Accept: text/markdown-Inhaltsverhandlung konfigurieren, um sie automatisch auszuliefern.
Unsere Empfehlung
# Carrero.es > Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale. ## Main - [Carrero.es es el sitio personal de David Carrero Fernández-Baillo](https://carrero.es): Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emp… - [Carrero](https://carrero.es/) - [Mis inversiones BA](https://carrero.es/inversiones/) - [Newsletter](https://carrero.es/boletin/) - [Suscribete al RSS](https://carrero.es/feed) - [Contacto](https://carrero.es/contactar/)
Vollständige llms.txt erfordert eine domainweite Analyse (kommt bald)
Laden Sie diese Datei als https://carrero.es/llms.txt im Stammverzeichnis Ihrer Domain hoch. KI-Agenten wie ChatGPT, Claude und Perplexity prüfen diese Datei, um Ihre Website-Struktur zu verstehen.
Diese Website hat bereits eine llms.txt-Datei.
Gültiges Format# Carrero.es > Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale. ## Main - [Carrero.es es el sitio personal de David Carrero Fernández-Baillo](https://carrero.es/): Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emp… - [Mis inversiones BA](https://carrero.es/inversiones/) - [Newsletter](https://carrero.es/boletin/) - [Suscribete al RSS](https://carrero.es/feed) - [Contacto](https://carrero.es/contactar/)
Semantisches HTML
Has both <article> and <main>
no <h1>
11 semantic elements, 81 divs (ratio: 12%)
No images found
Avg div depth: 9.1, max: 14
Inhaltseffizienz
99% token reduction (HTML→Markdown)
Content ratio: 0.5% (379 content chars / 74417 HTML bytes)
7/273 elements with inline styles (2.6%)
HTML size: 73KB
KI-Auffindbarkeit
llms.txt exists and is valid
robots.txt exists
All major AI bots allowed
Sitemap found
Strukturierte Daten
JSON-LD found: Person,Organization, WebSite, WebPage, Person, Article
2/3 OG tags present
Meta description: 155 chars
Canonical URL present
lang="es"
Zugänglichkeit
Content available without JavaScript
Page size: 73KB
Main content starts at 76% of HTML
{
"url": "https://carrero.es",
"timestamp": 1781241402039,
"fetch": {
"mode": "simple",
"timeMs": 690,
"htmlSizeBytes": 74417,
"supportsMarkdown": false,
"markdownAgents": {
"contentNegotiation": false,
"mdUrl": {
"found": false,
"url": null
},
"linkTag": {
"found": false,
"url": null
},
"linkHeader": {
"found": false,
"url": null
},
"responseHeaders": {
"contentSignal": null,
"xMarkdownTokens": null,
"vary": null
},
"frontmatter": {
"present": false,
"fields": [],
"level": "none"
},
"level": "none"
},
"statusCode": 200
},
"extraction": {
"title": "Carrero.es es el sitio personal de David Carrero Fernández-Baillo",
"excerpt": "Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale.",
"byline": null,
"siteName": "Carrero.es",
"lang": "es",
"contentLength": 379,
"metadata": {
"description": "Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale.",
"ogTitle": "Carrero.es es el sitio personal de David Carrero Fernández-Baillo",
"ogDescription": "Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale.",
"ogImage": null,
"ogType": "website",
"canonical": "https://carrero.es/",
"lang": "es",
"schemas": [
{
"@type": [
"Person",
"Organization"
],
"@id": "https://carrero.es/#person",
"name": "David Carrero Fdez-Baillo",
"sameAs": [
"https://www.facebook.com/davidcarrero",
"https://twitter.com/carrero"
]
},
{
"@type": "WebSite",
"@id": "https://carrero.es/#website",
"url": "https://carrero.es",
"name": "Carrero.es",
"alternateName": "David Carrero",
"publisher": {
"@id": "https://carrero.es/#person"
},
"inLanguage": "es",
"potentialAction": {
"@type": "SearchAction",
"target": "https://carrero.es/?s={search_term_string}",
"query-input": "required name=search_term_string"
}
},
{
"@type": "WebPage",
"@id": "https://carrero.es/#webpage",
"url": "https://carrero.es/",
"name": "Carrero.es es el sitio personal de David Carrero Fernández-Baillo",
"datePublished": "2019-11-18T11:53:13+01:00",
"dateModified": "2024-01-25T22:37:40+01:00",
"about": {
"@id": "https://carrero.es/#person"
},
"isPartOf": {
"@id": "https://carrero.es/#website"
},
"inLanguage": "es"
},
{
"@type": "Person",
"@id": "https://carrero.es/author/admin/",
"name": "David Carrero Fdez-Baillo",
"url": "https://carrero.es/author/admin/",
"image": {
"@type": "ImageObject",
"@id": "https://secure.gravatar.com/avatar/bfdfaf65290a2ec03899e508f3d59765f61efaa84e7b7a4b3c06aaaa06aa0582?s=96&d=mm&r=g",
"url": "https://secure.gravatar.com/avatar/bfdfaf65290a2ec03899e508f3d59765f61efaa84e7b7a4b3c06aaaa06aa0582?s=96&d=mm&r=g",
"caption": "David Carrero Fdez-Baillo",
"inLanguage": "es"
},
"sameAs": [
"http://davidcarrero.com",
"http://www.facebook.com/davidcarrero",
"https://twitter.com/carrero"
]
},
{
"@type": "Article",
"headline": "Carrero.es es el sitio personal de David Carrero Fernández-Baillo",
"keywords": "Carrero",
"datePublished": "2019-11-18T11:53:13+01:00",
"dateModified": "2024-01-25T22:37:40+01:00",
"author": {
"@id": "https://carrero.es/author/admin/",
"name": "David Carrero Fdez-Baillo"
},
"publisher": {
"@id": "https://carrero.es/#person"
},
"description": "Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale.",
"name": "Carrero.es es el sitio personal de David Carrero Fernández-Baillo",
"@id": "https://carrero.es/#richSnippet",
"isPartOf": {
"@id": "https://carrero.es/#webpage"
},
"inLanguage": "es",
"mainEntityOfPage": {
"@id": "https://carrero.es/#webpage"
}
}
],
"robotsMeta": "follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large",
"author": null,
"generator": null,
"markdownAlternateHref": null
}
},
"markdown": "Último Artículo\n\n## [La IA no está destruyendo empleo: está cambiando el precio del trabajo](https://carrero.es/la-ia-no-esta-destruyendo-empleo-esta-cambiando-el-precio-del-trabajo/)\n\n9 de junio de 2026\n\nDurante los últimos meses he leído demasiadas veces que la inteligencia artificial va a destruir el empleo sofisticado. Abogados, programadores, analistas, diseñadores, redactores, consultores, financieros, administradores de sistemas, … todos …\n\n[Leer más](https://carrero.es/la-ia-no-esta-destruyendo-empleo-esta-cambiando-el-precio-del-trabajo/)\n",
"fullPageMarkdown": "Carrero.es es el sitio personal de David Carrero Fernández-Baillo [Saltar al contenido](https://carrero.es/#content \"Saltar al contenido\")\n\nÚltimo Artículo\n\n## [La IA no está destruyendo empleo: está cambiando el precio del trabajo](https://carrero.es/la-ia-no-esta-destruyendo-empleo-esta-cambiando-el-precio-del-trabajo/)\n\n9 de junio de 2026\n\nDurante los últimos meses he leído demasiadas veces que la inteligencia artificial va a destruir el empleo sofisticado. Abogados, programadores, analistas, diseñadores, redactores, consultores, financieros, administradores de sistemas, … todos …\n\n[Leer más](https://carrero.es/la-ia-no-esta-destruyendo-empleo-esta-cambiando-el-precio-del-trabajo/)\n\n### [Vivimos dentro de dos inflaciones distintas](https://carrero.es/vivimos-dentro-de-dos-inflaciones-distintas/)\n\n2 de junio de 2026\n\n[Ver artículo](https://carrero.es/vivimos-dentro-de-dos-inflaciones-distintas/)\n\n### [Amazon no está creciendo: está ocupando capas enteras de la economía](https://carrero.es/amazon-no-esta-creciendo-esta-ocupando-capas-enteras-de-la-economia/)\n\n26 de mayo de 2026\n\n[Ver artículo](https://carrero.es/amazon-no-esta-creciendo-esta-ocupando-capas-enteras-de-la-economia/)\n\n### [Open source, IA y confianza: cuando el código abierto no basta](https://carrero.es/open-source-ia-y-confianza-cuando-el-codigo-abierto-no-basta/)\n\n22 de mayo de 2026\n\n[Ver artículo](https://carrero.es/open-source-ia-y-confianza-cuando-el-codigo-abierto-no-basta/)\n\n### [DirtyFrag, Copy Fail y el aviso que Linux no puede ignorar](https://carrero.es/dirtyfrag-copy-fail-aviso-que-linux-no-puede-ignorar/)\n\n19 de mayo de 2026\n\n[Ver artículo](https://carrero.es/dirtyfrag-copy-fail-aviso-que-linux-no-puede-ignorar/)\n\n### [Bloquear IPs por el fútbol es una barbaridad técnica que ya afecta a todos](https://carrero.es/bloquear-ips-por-el-futbol-es-una-barbaridad-tecnica-que-ya-afecta-a-todos/)\n\n16 de mayo de 2026\n\n[Ver artículo](https://carrero.es/bloquear-ips-por-el-futbol-es-una-barbaridad-tecnica-que-ya-afecta-a-todos/)\n\n### [Copy Fail y la falsa sensación de seguridad en nuestros sistemas](https://carrero.es/copy-fail-falsa-sensacion-seguridad-nuestros-sistemas/)\n\n12 de mayo de 2026\n\n[Ver artículo](https://carrero.es/copy-fail-falsa-sensacion-seguridad-nuestros-sistemas/)\n\n1[2](https://carrero.es/?query-22506824-page=2)[3](https://carrero.es/?query-22506824-page=3)…[521](https://carrero.es/?query-22506824-page=521) [Siguente](https://carrero.es/?query-22506824-page=2)\n\nBuscar:\n",
"markdownStats": {
"images": 0,
"links": 2,
"tables": 0,
"codeBlocks": 0,
"headings": 1
},
"tokens": {
"htmlTokens": 28767,
"markdownTokens": 166,
"reduction": 28601,
"reductionPercent": 99
},
"score": {
"score": 69,
"grade": "C",
"dimensions": {
"semanticHtml": {
"score": 72,
"weight": 20,
"grade": "C",
"checks": {
"uses_article_or_main": {
"score": 100,
"weight": 20,
"details": "Has both <article> and <main>"
},
"proper_heading_hierarchy": {
"score": 70,
"weight": 25,
"details": "no <h1>"
},
"semantic_elements": {
"score": 40,
"weight": 20,
"details": "11 semantic elements, 81 divs (ratio: 12%)"
},
"meaningful_alt_texts": {
"score": 100,
"weight": 15,
"details": "No images found"
},
"low_div_nesting": {
"score": 59,
"weight": 20,
"details": "Avg div depth: 9.1, max: 14"
}
}
},
"contentEfficiency": {
"score": 63,
"weight": 25,
"grade": "C",
"checks": {
"token_reduction_ratio": {
"score": 100,
"weight": 40,
"details": "99% token reduction (HTML→Markdown)"
},
"content_to_noise_ratio": {
"score": 0,
"weight": 30,
"details": "Content ratio: 0.5% (379 content chars / 74417 HTML bytes)"
},
"minimal_inline_styles": {
"score": 50,
"weight": 15,
"details": "7/273 elements with inline styles (2.6%)"
},
"reasonable_page_weight": {
"score": 100,
"weight": 15,
"details": "HTML size: 73KB"
}
}
},
"aiDiscoverability": {
"score": 55,
"weight": 25,
"grade": "D",
"checks": {
"has_llms_txt": {
"score": 100,
"weight": 20,
"details": "llms.txt exists and is valid"
},
"has_robots_txt": {
"score": 100,
"weight": 10,
"details": "robots.txt exists"
},
"robots_allows_ai_bots": {
"score": 100,
"weight": 15,
"details": "All major AI bots allowed"
},
"has_sitemap": {
"score": 100,
"weight": 10,
"details": "Sitemap found"
},
"supports_markdown_negotiation": {
"score": 0,
"weight": 25,
"details": "No Markdown for Agents support detected"
},
"has_content_signals": {
"score": 0,
"weight": 20,
"details": "No Content-Signal found (robots.txt or HTTP headers)"
}
}
},
"structuredData": {
"score": 92,
"weight": 15,
"grade": "A",
"checks": {
"has_schema_org": {
"score": 100,
"weight": 30,
"details": "JSON-LD found: Person,Organization, WebSite, WebPage, Person, Article"
},
"has_open_graph": {
"score": 67,
"weight": 25,
"details": "2/3 OG tags present"
},
"has_meta_description": {
"score": 100,
"weight": 20,
"details": "Meta description: 155 chars"
},
"has_canonical_url": {
"score": 100,
"weight": 15,
"details": "Canonical URL present"
},
"has_lang_attribute": {
"score": 100,
"weight": 10,
"details": "lang=\"es\""
}
}
},
"accessibility": {
"score": 78,
"weight": 15,
"grade": "B",
"checks": {
"content_without_js": {
"score": 100,
"weight": 40,
"details": "Content available without JavaScript"
},
"reasonable_page_size": {
"score": 100,
"weight": 30,
"details": "Page size: 73KB"
},
"fast_content_position": {
"score": 25,
"weight": 30,
"details": "Main content starts at 76% of HTML"
}
}
}
}
},
"recommendations": [
{
"id": "improve_content_ratio",
"priority": "critical",
"category": "contentEfficiency",
"titleKey": "rec.improve_content_ratio.title",
"descriptionKey": "rec.improve_content_ratio.description",
"howToKey": "rec.improve_content_ratio.howto",
"effort": "moderate",
"estimatedImpact": 6,
"checkScore": 0,
"checkDetails": "Content ratio: 0.5% (379 content chars / 74417 HTML bytes)"
},
{
"id": "add_markdown_negotiation",
"priority": "critical",
"category": "aiDiscoverability",
"titleKey": "rec.add_markdown_negotiation.title",
"descriptionKey": "rec.add_markdown_negotiation.description",
"howToKey": "rec.add_markdown_negotiation.howto",
"effort": "significant",
"estimatedImpact": 6,
"checkScore": 0,
"checkDetails": "No Markdown for Agents support detected"
},
{
"id": "add_content_signals",
"priority": "critical",
"category": "aiDiscoverability",
"titleKey": "rec.add_content_signals.title",
"descriptionKey": "rec.add_content_signals.description",
"howToKey": "rec.add_content_signals.howto",
"effort": "quick-win",
"estimatedImpact": 5,
"checkScore": 0,
"checkDetails": "No Content-Signal found (robots.txt or HTTP headers)"
},
{
"id": "add_semantic_elements",
"priority": "high",
"category": "semanticHtml",
"titleKey": "rec.add_semantic_elements.title",
"descriptionKey": "rec.add_semantic_elements.description",
"howToKey": "rec.add_semantic_elements.howto",
"effort": "moderate",
"estimatedImpact": 5,
"checkScore": 40,
"checkDetails": "11 semantic elements, 81 divs (ratio: 12%)"
},
{
"id": "move_content_earlier",
"priority": "high",
"category": "accessibility",
"titleKey": "rec.move_content_earlier.title",
"descriptionKey": "rec.move_content_earlier.description",
"howToKey": "rec.move_content_earlier.howto",
"effort": "moderate",
"estimatedImpact": 4,
"checkScore": 25,
"checkDetails": "Main content starts at 76% of HTML"
},
{
"id": "fix_heading_hierarchy",
"priority": "medium",
"category": "semanticHtml",
"titleKey": "rec.fix_heading_hierarchy.title",
"descriptionKey": "rec.fix_heading_hierarchy.description",
"howToKey": "rec.fix_heading_hierarchy.howto",
"effort": "quick-win",
"estimatedImpact": 6,
"checkScore": 70,
"checkDetails": "no <h1>"
},
{
"id": "add_open_graph",
"priority": "medium",
"category": "structuredData",
"titleKey": "rec.add_open_graph.title",
"descriptionKey": "rec.add_open_graph.description",
"howToKey": "rec.add_open_graph.howto",
"effort": "quick-win",
"estimatedImpact": 4,
"checkScore": 67,
"checkDetails": "2/3 OG tags present"
},
{
"id": "remove_inline_styles",
"priority": "medium",
"category": "contentEfficiency",
"titleKey": "rec.remove_inline_styles.title",
"descriptionKey": "rec.remove_inline_styles.description",
"howToKey": "rec.remove_inline_styles.howto",
"effort": "moderate",
"estimatedImpact": 3,
"checkScore": 50,
"checkDetails": "7/273 elements with inline styles (2.6%)"
}
],
"llmsTxtPreview": "# Carrero.es\n\n> Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale.\n\n## Main\n- [Carrero.es es el sitio personal de David Carrero Fernández-Baillo](https://carrero.es): Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emp…\n- [Carrero](https://carrero.es/)\n- [Mis inversiones BA](https://carrero.es/inversiones/)\n- [Newsletter](https://carrero.es/boletin/)\n- [Suscribete al RSS](https://carrero.es/feed)\n- [Contacto](https://carrero.es/contactar/)\n\n",
"llmsTxtExisting": "# Carrero.es\n\n> Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale.\n\n## Main\n- [Carrero.es es el sitio personal de David Carrero Fernández-Baillo](https://carrero.es/): Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emp…\n- [Mis inversiones BA](https://carrero.es/inversiones/)\n- [Newsletter](https://carrero.es/boletin/)\n- [Suscribete al RSS](https://carrero.es/feed)\n- [Contacto](https://carrero.es/contactar/)",
"emergingProtocols": {
"oauthDiscovery": {
"exists": false,
"url": "https://carrero.es/.well-known/oauth-authorization-server"
},
"mcpServerCard": {
"exists": false,
"url": "https://carrero.es/.well-known/mcp.json"
},
"a2aAgentCard": {
"exists": false,
"url": "https://carrero.es/.well-known/agent.json"
},
"count": 0
},
"snippets": [
{
"id": "fix_heading_hierarchy",
"title": "Fix heading hierarchy",
"description": "Your page has no <h1>. Every page needs exactly one <h1> as the main heading. Add it inside your <main> or <article>.",
"language": "html",
"code": "<h1>Carrero.es es el sitio personal de David Carrero Fernández-Baillo</h1>",
"filename": "<main> or <article>"
},
{
"id": "add_open_graph",
"title": "Add missing Open Graph tags",
"description": "Open Graph tags control how your page looks when shared on social media and how AI platforms preview your URL in answers.",
"language": "html",
"code": "<meta property=\"og:image\" content=\"https://yoursite.com/og-image.jpg\">\n<meta property=\"og:url\" content=\"https://carrero.es\">\n<meta property=\"og:type\" content=\"website\">",
"filename": "<head>",
"stacks": [
{
"id": "html",
"label": "HTML <head>",
"language": "html",
"filename": "<head>",
"code": "<meta property=\"og:image\" content=\"https://yoursite.com/og-image.jpg\">\n<meta property=\"og:url\" content=\"https://carrero.es\">\n<meta property=\"og:type\" content=\"website\">"
},
{
"id": "wordpress",
"label": "WordPress",
"language": "php",
"filename": "functions.php",
"code": "<?php\n// Quick Open Graph tags without a plugin (skip if Yoast / Rank Math is active)\nadd_action('wp_head', function () {\n if (!is_singular()) return;\n $post = get_queried_object();\n $title = get_the_title($post);\n $desc = get_the_excerpt($post) ?: wp_trim_words(strip_tags($post->post_content), 30);\n $image = get_the_post_thumbnail_url($post, 'large') ?: 'https://yoursite.com/og-image.jpg';\n $url = get_permalink($post);\n printf('<meta property=\"og:title\" content=\"%s\">' . \"\\n\", esc_attr($title));\n printf('<meta property=\"og:description\" content=\"%s\">' . \"\\n\", esc_attr($desc));\n printf('<meta property=\"og:image\" content=\"%s\">' . \"\\n\", esc_url($image));\n printf('<meta property=\"og:url\" content=\"%s\">' . \"\\n\", esc_url($url));\n echo '<meta property=\"og:type\" content=\"article\">' . \"\\n\";\n}, 5);"
},
{
"id": "nextjs",
"label": "Next.js",
"language": "typescript",
"filename": "app/page.tsx",
"code": "// Next.js App Router — Metadata API\nimport type { Metadata } from 'next';\n\nexport const metadata: Metadata = {\n title: \"Carrero.es es el sitio personal de David Carrero Fernández-Baillo\",\n description: \"Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale.\",\n openGraph: {\n title: \"Carrero.es es el sitio personal de David Carrero Fernández-Baillo\",\n description: \"Carrero.es en un blog iniciado por David Carrero Fernández-Baillo. Todo sobre Internet, Tecnología y Negocios. BA y emprendediendo otra vez con Stackscale.\",\n url: \"https://carrero.es\",\n images: [\"https://yoursite.com/og-image.jpg\"],\n type: 'website',\n },\n};"
}
]
},
{
"id": "add_content_signals",
"title": "Add Content-Signal directives",
"description": "Content-Signal tells AI agents how they may use your content. The canonical location is robots.txt, but you can also expose it as an HTTP header from any stack.",
"language": "txt",
"code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no",
"filename": "/robots.txt",
"stacks": [
{
"id": "robots",
"label": "robots.txt",
"language": "txt",
"filename": "/robots.txt",
"code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no"
},
{
"id": "nginx",
"label": "Nginx",
"language": "nginx",
"filename": "server block",
"code": "# Inside your server { } block:\nadd_header Content-Signal \"search=yes, ai-input=yes, ai-train=no\" always;"
},
{
"id": "apache",
"label": "Apache",
"language": "apache",
"filename": ".htaccess",
"code": "# In .htaccess (or VirtualHost):\nHeader set Content-Signal \"search=yes, ai-input=yes, ai-train=no\""
},
{
"id": "wordpress",
"label": "WordPress",
"language": "php",
"filename": "functions.php",
"code": "<?php\n// In your theme's functions.php or a small mu-plugin\nadd_action('send_headers', function () {\n header('Content-Signal: search=yes, ai-input=yes, ai-train=no');\n});\n\n// Optional: also append the directive to the dynamic robots.txt\nadd_filter('robots_txt', function ($output) {\n return $output . \"\\nContent-Signal: search=yes, ai-input=yes, ai-train=no\\n\";\n}, 10, 1);"
},
{
"id": "nextjs",
"label": "Next.js",
"language": "typescript",
"filename": "middleware.ts",
"code": "// middleware.ts (Next.js 13+ App Router or Pages Router)\nimport { NextResponse } from 'next/server';\nexport function middleware() {\n const res = NextResponse.next();\n res.headers.set(\n 'Content-Signal',\n 'search=yes, ai-input=yes, ai-train=no'\n );\n return res;\n}\nexport const config = { matcher: '/:path*' };"
},
{
"id": "cloudflare",
"label": "Cloudflare Workers",
"language": "javascript",
"filename": "worker.js",
"code": "// Cloudflare Worker that proxies your origin and adds the header\nexport default {\n async fetch(request, env, ctx) {\n const res = await fetch(request);\n const newRes = new Response(res.body, res);\n newRes.headers.set(\n 'Content-Signal',\n 'search=yes, ai-input=yes, ai-train=no'\n );\n return newRes;\n },\n};"
},
{
"id": "express",
"label": "Express / Fastify",
"language": "javascript",
"filename": "server.js",
"code": "// Express\napp.use((req, res, next) => {\n res.setHeader('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n next();\n});\n\n// Fastify\nfastify.addHook('onSend', (request, reply, payload, done) => {\n reply.header('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n done();\n});"
}
]
},
{
"id": "add_markdown_negotiation",
"title": "Support Markdown for Agents",
"description": "Let AI agents request a clean Markdown version of any page via content negotiation, .md alternate URLs, link tags or Link headers.",
"language": "html",
"code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">",
"filename": "<head>",
"stacks": [
{
"id": "html",
"label": "HTML <head>",
"language": "html",
"filename": "<head>",
"code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
},
{
"id": "express",
"label": "Express",
"language": "javascript",
"filename": "server.js",
"code": "// Mechanisms 1 + 4: content negotiation + Link header\napp.get('/page', (req, res) => {\n res.setHeader('Vary', 'Accept');\n res.setHeader('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n res.type('text/markdown; charset=utf-8');\n return res.send(renderMarkdown('page'));\n }\n res.render('page');\n});"
},
{
"id": "fastify",
"label": "Fastify",
"language": "javascript",
"filename": "server.js",
"code": "// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n reply.header('Vary', 'Accept');\n reply.header('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n }\n return reply.view('/page.ejs');\n});"
},
{
"id": "nextjs",
"label": "Next.js",
"language": "typescript",
"filename": "app/page/route.ts",
"code": "// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n const accept = req.headers.get('accept') || '';\n if (accept.includes('text/markdown')) {\n return new Response(await renderMarkdown('page'), {\n headers: {\n 'Content-Type': 'text/markdown; charset=utf-8',\n 'Vary': 'Accept',\n },\n });\n }\n // Fall through to the page component\n return new Response(null, { status: 404 });\n}"
},
{
"id": "wordpress",
"label": "WordPress",
"language": "php",
"filename": "functions.php",
"code": "<?php\n// Mechanism 1: respond to Accept: text/markdown on the same URL\nadd_action('template_redirect', function () {\n if (!is_singular()) return;\n $accept = $_SERVER['HTTP_ACCEPT'] ?? '';\n if (strpos($accept, 'text/markdown') === false) return;\n header('Content-Type: text/markdown; charset=utf-8');\n header('Vary: Accept');\n $post = get_queried_object();\n echo \"# \" . get_the_title($post) . \"\\n\\n\";\n echo wp_strip_all_tags(apply_filters('the_content', $post->post_content));\n exit;\n});"
},
{
"id": "static",
"label": "Hugo / Jekyll / Astro",
"language": "txt",
"filename": "static/page.md",
"code": "# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in <head>:\n# <link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
}
]
}
]
}
Nutzen Sie unsere API, um dies programmatisch abzurufen (kommt bald)
Dieses JSON ist für den internen Gebrauch bestimmt — im Gegensatz zu den Markdown- und llms.txt-Dateien soll es nicht auf Ihre Website hochgeladen werden. Speichern Sie es als Ausgangswert, um Ihren Score im Zeitverlauf zu verfolgen, teilen Sie es mit Ihrem Entwicklerteam oder integrieren Sie es in Ihre CI/CD-Pipeline.
Badge einbetten
Fügen Sie dieses Badge zu Ihrer Website hinzu. Es aktualisiert sich automatisch, wenn sich Ihr KI-Bereitschafts-Score ändert.
<script src="https://agentready.md/badge.js" data-id="6cdd241e-5e77-46da-881f-3329dd19f799" data-domain="carrero.es"></script>
[](https://agentready.md/de/r/6cdd241e-5e77-46da-881f-3329dd19f799)
Demnächst: Vollständige Domain-Analyse
Crawlen Sie Ihre gesamte Domain, generieren Sie llms.txt und überwachen Sie Ihren KI-Bereitschaftswert im Zeitverlauf. Tragen Sie sich in die Warteliste ein.