Certificado AgentReady.md verificado
Emitido el sig: 684a794d88bb2670 Verificar →

URL analizada

https://grapheneos.org

Medido hace 2 semanas

Analizar otra URL

Puntuación AI-Ready

Aceptable

de 100

Ahorro de tokens

Tokens HTML 1812
Tokens Markdown 703
Ahorro 61%

Desglose de la puntuación

HTML semántico 85/100
Eficiencia del contenido 92/100
Visibilidad para IA 35/100
Datos estructurados 70/100
Accesibilidad 93/100

Protocolos emergentes

0 de 6 detectados

Endpoints well-known que los AI agents buscan. Detectados significa que un agente puede descubrir y conectar con tu servicio automáticamente.

  • OAuth Protected Resource RFC 9728
    /.well-known/oauth-protected-resource
  • OAuth Discovery RFC 8414
    /.well-known/oauth-authorization-server
  • MCP Server Card SEP-1649 draft
    /.well-known/mcp/server-card.json
  • A2A Agent Card A2A v1.0
    /.well-known/agent-card.json
  • API Catalog RFC 9727
    /.well-known/api-catalog
  • Agent Skills index Discovery RFC v0.2.0 draft
    /.well-known/agent-skills/index.json

Esto no se queda quieto. La monitorización aún no existe: apúntate y te avisamos cuando esté.

¡Estás en la lista! Te avisaremos cuando se lance.

Lo que medimos No llms.txt found

Tu sitio no tiene un archivo llms.txt. Este es el estándar emergente para ayudar a los AI agents a comprender la estructura de tu sitio.

Cómo implementarlo

Crea un archivo /llms.txt siguiendo la especificación de llmstxt.org. Incluye una descripción del sitio y enlaces a tus páginas principales.

Pégalo en un agente de código para que lo arregle

Lo que medimos No Markdown for Agents support detected

Tu sitio no soporta Markdown for Agents. Este estándar de Cloudflare permite a los agentes IA solicitar contenido en formato markdown, reduciendo el uso de tokens en ~80%.

Cómo implementarlo

Implementa uno o más: (1) Responder a Accept: text/markdown con contenido markdown. (2) Servir URLs .md (ej: /pagina.md). (3) Añadir etiquetas <link rel="alternate" type="text/markdown">. (4) Añadir cabeceras HTTP Link para descubrimiento markdown.

Pégalo en un agente de código para que lo arregle

Lo que medimos No Content-Signal found (robots.txt or HTTP headers)

No se encontraron directivas Content-Signal. Estas indican a los agentes IA cómo pueden usar tu contenido (indexación, entrada IA, datos de entrenamiento). La ubicación recomendada es robots.txt.

Cómo implementarlo

Añade Content-Signal a tu robots.txt: User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no. También puedes añadirlo como cabecera HTTP en respuestas markdown.

Pégalo en un agente de código para que lo arregle

Lo que medimos 0/4 images with meaningful alt text

Algunas imágenes carecen de texto alternativo descriptivo. Un buen texto alternativo ayuda a los AI agents a comprender el contenido y contexto de las imágenes.

Cómo implementarlo

Añade atributos alt descriptivos a todas las imágenes. Describe lo que muestra la imagen, no solo 'imagen' o 'foto'. Para imágenes decorativas, usa alt="" (vacío).

Pégalo en un agente de código para que lo arregle

Lo que medimos No JSON-LD / Schema.org found

No se encontraron datos estructurados de Schema.org. JSON-LD ayuda a los AI agents a extraer información factual y estructurada de tus páginas.

Cómo implementarlo

Añade un bloque <script type="application/ld+json"> con marcado Schema.org. Usa los tipos apropiados: Article para entradas de blog, Product para productos, Organization para la página de tu empresa.

Pégalo en un agente de código para que lo arregle
Tokens Markdown: 703
The private and secure mobile operating system with Android app compatibility. Developed as a non-profit open source project.

[Install GrapheneOS](https://grapheneos.org/install/)

![](https://grapheneos.org/f979bf77.pixel-7-pro.svg)

## [About](https://grapheneos.org/#about)

GrapheneOS is a privacy and security focused mobile OS with Android app compatibility developed as a non-profit [open source](https://grapheneos.org/source) project. It's focused on the research and development of privacy and security technology including substantial improvements to sandboxing, exploit mitigations and the permission model. It was founded in 2014 and was [formerly known as CopperheadOS](https://grapheneos.org/history/copperheados).

GrapheneOS improves the privacy and security of the OS from the bottom up. It deploys technologies to mitigate whole classes of vulnerabilities and make exploiting the most common sources of vulnerabilities substantially more difficult. It improves the security of both the OS and the apps running on it. The app sandbox and other security boundaries are fortified. GrapheneOS tries to avoid impacting the user experience with the privacy and security features. Ideally, the features can be designed so that they're always enabled with no impact on the user experience and no additional complexity like configuration options. It's not always feasible, and GrapheneOS does add various toggles for features like the Network permission, Sensors permission, restrictions when the device is locked (USB-C and pogo pins, camera, quick tiles), etc. along with more complex user-facing privacy and security features with their own UX.

The [features page](https://grapheneos.org/features) provides an overview of the substantial privacy and security improvements added by GrapheneOS to the Android Open Source Project (AOSP). Many of our past features were [contributed to AOSP, Linux and other projects to improve privacy and security for billions of users](https://grapheneos.org/faq#upstream) so they're no longer listed on our features page.

Official releases are available on the [releases page](https://grapheneos.org/releases) and installation instructions are on the [install page](https://grapheneos.org/install/).

GrapheneOS also develops various apps and services with a focus on privacy and security. Vanadium is a hardened variant of the Chromium browser and WebView specifically built for GrapheneOS. GrapheneOS also includes our minimal security-focused PDF Viewer, our hardware-based Auditor app providing local and remote verification and attestation of devices, our modern privacy and security focused camera app, and the externally developed Seedvault encrypted backup which was initially developed for inclusion in GrapheneOS.

## [No Google apps or services](https://grapheneos.org/#never-google-services)

GrapheneOS will never include either Google Play services or another implementation of Google services like microG. It's possible to install Play services as a set of fully sandboxed apps without special privileges via our [sandboxed Google Play compatibility layer](https://grapheneos.org/usage#sandboxed-google-play). See [the FAQ section](https://grapheneos.org/faq#google-services) for more details on our plans for filling in the gaps from not shipping Play services and Google apps.

## [Device support](https://grapheneos.org/faq#device-support)

See [the FAQ section on device support](https://grapheneos.org/faq#device-support).
GrapheneOS: the private and secure mobile OS

# [GrapheneOS](https://grapheneos.org/#grapheneos)

The private and secure mobile operating system with Android app compatibility. Developed as a non-profit open source project.

[Install GrapheneOS](https://grapheneos.org/install/)

![](https://grapheneos.org/f979bf77.pixel-7-pro.svg)

Get to know GrapheneOS

## [About](https://grapheneos.org/#about)

GrapheneOS is a privacy and security focused mobile OS with Android app compatibility developed as a non-profit [open source](https://grapheneos.org/source) project. It's focused on the research and development of privacy and security technology including substantial improvements to sandboxing, exploit mitigations and the permission model. It was founded in 2014 and was [formerly known as CopperheadOS](https://grapheneos.org/history/copperheados).

GrapheneOS improves the privacy and security of the OS from the bottom up. It deploys technologies to mitigate whole classes of vulnerabilities and make exploiting the most common sources of vulnerabilities substantially more difficult. It improves the security of both the OS and the apps running on it. The app sandbox and other security boundaries are fortified. GrapheneOS tries to avoid impacting the user experience with the privacy and security features. Ideally, the features can be designed so that they're always enabled with no impact on the user experience and no additional complexity like configuration options. It's not always feasible, and GrapheneOS does add various toggles for features like the Network permission, Sensors permission, restrictions when the device is locked (USB-C and pogo pins, camera, quick tiles), etc. along with more complex user-facing privacy and security features with their own UX.

The [features page](https://grapheneos.org/features) provides an overview of the substantial privacy and security improvements added by GrapheneOS to the Android Open Source Project (AOSP). Many of our past features were [contributed to AOSP, Linux and other projects to improve privacy and security for billions of users](https://grapheneos.org/faq#upstream) so they're no longer listed on our features page.

Official releases are available on the [releases page](https://grapheneos.org/releases) and installation instructions are on the [install page](https://grapheneos.org/install/).

GrapheneOS also develops various apps and services with a focus on privacy and security. Vanadium is a hardened variant of the Chromium browser and WebView specifically built for GrapheneOS. GrapheneOS also includes our minimal security-focused PDF Viewer, our hardware-based Auditor app providing local and remote verification and attestation of devices, our modern privacy and security focused camera app, and the externally developed Seedvault encrypted backup which was initially developed for inclusion in GrapheneOS.

## [No Google apps or services](https://grapheneos.org/#never-google-services)

GrapheneOS will never include either Google Play services or another implementation of Google services like microG. It's possible to install Play services as a set of fully sandboxed apps without special privileges via our [sandboxed Google Play compatibility layer](https://grapheneos.org/usage#sandboxed-google-play). See [the FAQ section](https://grapheneos.org/faq#google-services) for more details on our plans for filling in the gaps from not shipping Play services and Google apps.

## [Device support](https://grapheneos.org/faq#device-support)

See [the FAQ section on device support](https://grapheneos.org/faq#device-support).

Sube este archivo como /index.md en tu servidor para que los AI agents puedan acceder a una versión limpia de tu página. También puedes configurar la negociación de contenido Accept: text/markdown para servirlo automáticamente.

llms.txt generado para esta página individual

Descargar llms.txt
# GrapheneOS

> GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.

## Documentation
- [FAQ](https://grapheneos.org/faq)

## Main
- [GrapheneOS: the private and secure mobile OS](https://grapheneos.org): GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.
- [Features](https://grapheneos.org/features)
- [GrapheneOS](https://grapheneos.org/)
- [Install](https://grapheneos.org/install/)
- [Build](https://grapheneos.org/build)
- [Usage](https://grapheneos.org/usage)
- [Releases](https://grapheneos.org/releases)
- [Source](https://grapheneos.org/source)
- [History](https://grapheneos.org/history/)
- [Donate](https://grapheneos.org/donate)

## Blog
- [Articles](https://grapheneos.org/articles/)

## Support
- [FAQ](https://grapheneos.org/faq)
- [Contact](https://grapheneos.org/contact)

El llms.txt completo requiere un análisis de todo el dominio (próximamente)

Sube este archivo a https://grapheneos.org/llms.txt en la raíz de tu dominio. Los AI agents como ChatGPT, Claude y Perplexity consultan este archivo para comprender la estructura de tu sitio.

HTML semántico

Usa elementos article o main (100/100)

Has <main>

Jerarquía de encabezados correcta (100/100)

Clean heading hierarchy

Usa elementos HTML semánticos (100/100)

8 semantic elements, 5 divs (ratio: 62%)

Textos alternativos descriptivos en imágenes (0/100)

0/4 images with meaningful alt text

Poca profundidad de anidamiento de divs (100/100)

Avg div depth: 0.4, max: 1

Eficiencia del contenido

Buen ratio de reducción de tokens (80/100)

61% token reduction (HTML→Markdown)

Buen ratio de contenido frente a ruido (100/100)

Content ratio: 41.1% (2876 content chars / 6997 HTML bytes)

Estilos en línea mínimos (100/100)

0/124 elements with inline styles (0.0%)

Peso de página razonable (100/100)

HTML size: 7KB

Visibilidad para IA

Tiene archivo llms.txt (0/100)

No llms.txt found

Tiene archivo robots.txt (100/100)

robots.txt exists

robots.txt permite bots de IA (100/100)

All major AI bots allowed

Tiene sitemap.xml (100/100)

Sitemap found

Soporte de Markdown for Agents (0/100)
&#10007; Accept: text/markdown &#10007; .md URL &#10007; <link> tag &#10007; Link header
Tiene Content-Signal (robots.txt o cabeceras HTTP) (0/100)
&#10003; robots.txt &#10003; HTTP header &#10007; Policy

Datos estructurados

Tiene Schema.org / JSON-LD (0/100)

No JSON-LD / Schema.org found

Tiene etiquetas Open Graph (100/100)

All OG tags present

Tiene meta description (100/100)

Meta description: 86 chars

Tiene URL canónica (100/100)

Canonical URL present

Tiene atributo lang (100/100)

lang="en"

Accesibilidad

Contenido disponible sin JavaScript (100/100)

Content available without JavaScript

Tamaño de página razonable (100/100)

Page size: 7KB

El contenido aparece temprano en el HTML (75/100)

Main content starts at 33% of HTML

{
  "url": "https://grapheneos.org",
  "timestamp": 1783252037087,
  "fetch": {
    "mode": "simple",
    "timeMs": 94,
    "htmlSizeBytes": 6997,
    "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": "GrapheneOS: the private and secure mobile OS",
    "excerpt": "GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.",
    "byline": null,
    "siteName": "GrapheneOS",
    "lang": "en",
    "contentLength": 2876,
    "metadata": {
      "description": "GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.",
      "ogTitle": "GrapheneOS: the private and secure mobile OS",
      "ogDescription": "GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.",
      "ogImage": "https://grapheneos.org/opengraph.png",
      "ogType": "website",
      "canonical": "https://grapheneos.org/",
      "lang": "en",
      "schemas": [],
      "robotsMeta": null,
      "author": null,
      "generator": null,
      "markdownAlternateHref": null
    }
  },
  "markdown": "The private and secure mobile operating system with Android app compatibility. Developed as a non-profit open source project.\n\n[Install GrapheneOS](https://grapheneos.org/install/)\n\n![](https://grapheneos.org/f979bf77.pixel-7-pro.svg)\n\n## [About](https://grapheneos.org/#about)\n\nGrapheneOS is a privacy and security focused mobile OS with Android app compatibility developed as a non-profit [open source](https://grapheneos.org/source) project. It's focused on the research and development of privacy and security technology including substantial improvements to sandboxing, exploit mitigations and the permission model. It was founded in 2014 and was [formerly known as CopperheadOS](https://grapheneos.org/history/copperheados).\n\nGrapheneOS improves the privacy and security of the OS from the bottom up. It deploys technologies to mitigate whole classes of vulnerabilities and make exploiting the most common sources of vulnerabilities substantially more difficult. It improves the security of both the OS and the apps running on it. The app sandbox and other security boundaries are fortified. GrapheneOS tries to avoid impacting the user experience with the privacy and security features. Ideally, the features can be designed so that they're always enabled with no impact on the user experience and no additional complexity like configuration options. It's not always feasible, and GrapheneOS does add various toggles for features like the Network permission, Sensors permission, restrictions when the device is locked (USB-C and pogo pins, camera, quick tiles), etc. along with more complex user-facing privacy and security features with their own UX.\n\nThe [features page](https://grapheneos.org/features) provides an overview of the substantial privacy and security improvements added by GrapheneOS to the Android Open Source Project (AOSP). Many of our past features were [contributed to AOSP, Linux and other projects to improve privacy and security for billions of users](https://grapheneos.org/faq#upstream) so they're no longer listed on our features page.\n\nOfficial releases are available on the [releases page](https://grapheneos.org/releases) and installation instructions are on the [install page](https://grapheneos.org/install/).\n\nGrapheneOS also develops various apps and services with a focus on privacy and security. Vanadium is a hardened variant of the Chromium browser and WebView specifically built for GrapheneOS. GrapheneOS also includes our minimal security-focused PDF Viewer, our hardware-based Auditor app providing local and remote verification and attestation of devices, our modern privacy and security focused camera app, and the externally developed Seedvault encrypted backup which was initially developed for inclusion in GrapheneOS.\n\n## [No Google apps or services](https://grapheneos.org/#never-google-services)\n\nGrapheneOS will never include either Google Play services or another implementation of Google services like microG. It's possible to install Play services as a set of fully sandboxed apps without special privileges via our [sandboxed Google Play compatibility layer](https://grapheneos.org/usage#sandboxed-google-play). See [the FAQ section](https://grapheneos.org/faq#google-services) for more details on our plans for filling in the gaps from not shipping Play services and Google apps.\n\n## [Device support](https://grapheneos.org/faq#device-support)\n\nSee [the FAQ section on device support](https://grapheneos.org/faq#device-support).\n",
  "fullPageMarkdown": "GrapheneOS: the private and secure mobile OS\n\n# [GrapheneOS](https://grapheneos.org/#grapheneos)\n\nThe private and secure mobile operating system with Android app compatibility. Developed as a non-profit open source project.\n\n[Install GrapheneOS](https://grapheneos.org/install/)\n\n![](https://grapheneos.org/f979bf77.pixel-7-pro.svg)\n\nGet to know GrapheneOS\n\n## [About](https://grapheneos.org/#about)\n\nGrapheneOS is a privacy and security focused mobile OS with Android app compatibility developed as a non-profit [open source](https://grapheneos.org/source) project. It's focused on the research and development of privacy and security technology including substantial improvements to sandboxing, exploit mitigations and the permission model. It was founded in 2014 and was [formerly known as CopperheadOS](https://grapheneos.org/history/copperheados).\n\nGrapheneOS improves the privacy and security of the OS from the bottom up. It deploys technologies to mitigate whole classes of vulnerabilities and make exploiting the most common sources of vulnerabilities substantially more difficult. It improves the security of both the OS and the apps running on it. The app sandbox and other security boundaries are fortified. GrapheneOS tries to avoid impacting the user experience with the privacy and security features. Ideally, the features can be designed so that they're always enabled with no impact on the user experience and no additional complexity like configuration options. It's not always feasible, and GrapheneOS does add various toggles for features like the Network permission, Sensors permission, restrictions when the device is locked (USB-C and pogo pins, camera, quick tiles), etc. along with more complex user-facing privacy and security features with their own UX.\n\nThe [features page](https://grapheneos.org/features) provides an overview of the substantial privacy and security improvements added by GrapheneOS to the Android Open Source Project (AOSP). Many of our past features were [contributed to AOSP, Linux and other projects to improve privacy and security for billions of users](https://grapheneos.org/faq#upstream) so they're no longer listed on our features page.\n\nOfficial releases are available on the [releases page](https://grapheneos.org/releases) and installation instructions are on the [install page](https://grapheneos.org/install/).\n\nGrapheneOS also develops various apps and services with a focus on privacy and security. Vanadium is a hardened variant of the Chromium browser and WebView specifically built for GrapheneOS. GrapheneOS also includes our minimal security-focused PDF Viewer, our hardware-based Auditor app providing local and remote verification and attestation of devices, our modern privacy and security focused camera app, and the externally developed Seedvault encrypted backup which was initially developed for inclusion in GrapheneOS.\n\n## [No Google apps or services](https://grapheneos.org/#never-google-services)\n\nGrapheneOS will never include either Google Play services or another implementation of Google services like microG. It's possible to install Play services as a set of fully sandboxed apps without special privileges via our [sandboxed Google Play compatibility layer](https://grapheneos.org/usage#sandboxed-google-play). See [the FAQ section](https://grapheneos.org/faq#google-services) for more details on our plans for filling in the gaps from not shipping Play services and Google apps.\n\n## [Device support](https://grapheneos.org/faq#device-support)\n\nSee [the FAQ section on device support](https://grapheneos.org/faq#device-support).\n",
  "markdownStats": {
    "images": 1,
    "links": 13,
    "tables": 0,
    "codeBlocks": 0,
    "headings": 3
  },
  "tokens": {
    "htmlTokens": 1812,
    "markdownTokens": 703,
    "reduction": 1109,
    "reductionPercent": 61
  },
  "score": {
    "score": 73,
    "grade": "C",
    "dimensions": {
      "semanticHtml": {
        "score": 85,
        "weight": 20,
        "grade": "B",
        "checks": {
          "uses_article_or_main": {
            "score": 100,
            "weight": 20,
            "details": "Has <main>"
          },
          "proper_heading_hierarchy": {
            "score": 100,
            "weight": 25,
            "details": "Clean heading hierarchy"
          },
          "semantic_elements": {
            "score": 100,
            "weight": 20,
            "details": "8 semantic elements, 5 divs (ratio: 62%)"
          },
          "meaningful_alt_texts": {
            "score": 0,
            "weight": 15,
            "details": "0/4 images with meaningful alt text"
          },
          "low_div_nesting": {
            "score": 100,
            "weight": 20,
            "details": "Avg div depth: 0.4, max: 1"
          }
        }
      },
      "contentEfficiency": {
        "score": 92,
        "weight": 25,
        "grade": "A",
        "checks": {
          "token_reduction_ratio": {
            "score": 80,
            "weight": 40,
            "details": "61% token reduction (HTML→Markdown)"
          },
          "content_to_noise_ratio": {
            "score": 100,
            "weight": 30,
            "details": "Content ratio: 41.1% (2876 content chars / 6997 HTML bytes)"
          },
          "minimal_inline_styles": {
            "score": 100,
            "weight": 15,
            "details": "0/124 elements with inline styles (0.0%)"
          },
          "reasonable_page_weight": {
            "score": 100,
            "weight": 15,
            "details": "HTML size: 7KB"
          }
        }
      },
      "aiDiscoverability": {
        "score": 35,
        "weight": 25,
        "grade": "F",
        "checks": {
          "has_llms_txt": {
            "score": 0,
            "weight": 20,
            "details": "No llms.txt found"
          },
          "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": 70,
        "weight": 15,
        "grade": "C",
        "checks": {
          "has_schema_org": {
            "score": 0,
            "weight": 30,
            "details": "No JSON-LD / Schema.org found"
          },
          "has_open_graph": {
            "score": 100,
            "weight": 25,
            "details": "All OG tags present"
          },
          "has_meta_description": {
            "score": 100,
            "weight": 20,
            "details": "Meta description: 86 chars"
          },
          "has_canonical_url": {
            "score": 100,
            "weight": 15,
            "details": "Canonical URL present"
          },
          "has_lang_attribute": {
            "score": 100,
            "weight": 10,
            "details": "lang=\"en\""
          }
        }
      },
      "accessibility": {
        "score": 93,
        "weight": 15,
        "grade": "A",
        "checks": {
          "content_without_js": {
            "score": 100,
            "weight": 40,
            "details": "Content available without JavaScript"
          },
          "reasonable_page_size": {
            "score": 100,
            "weight": 30,
            "details": "Page size: 7KB"
          },
          "fast_content_position": {
            "score": 75,
            "weight": 30,
            "details": "Main content starts at 33% of HTML"
          }
        }
      }
    }
  },
  "recommendations": [
    {
      "id": "add_llms_txt",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_llms_txt.title",
      "descriptionKey": "rec.add_llms_txt.description",
      "howToKey": "rec.add_llms_txt.howto",
      "effort": "quick-win",
      "estimatedImpact": 10,
      "checkScore": 0,
      "checkDetails": "No llms.txt found"
    },
    {
      "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": "improve_alt_texts",
      "priority": "critical",
      "category": "semanticHtml",
      "titleKey": "rec.improve_alt_texts.title",
      "descriptionKey": "rec.improve_alt_texts.description",
      "howToKey": "rec.improve_alt_texts.howto",
      "effort": "moderate",
      "estimatedImpact": 4,
      "checkScore": 0,
      "checkDetails": "0/4 images with meaningful alt text"
    },
    {
      "id": "add_schema_org",
      "priority": "high",
      "category": "structuredData",
      "titleKey": "rec.add_schema_org.title",
      "descriptionKey": "rec.add_schema_org.description",
      "howToKey": "rec.add_schema_org.howto",
      "effort": "moderate",
      "estimatedImpact": 6,
      "checkScore": 0,
      "checkDetails": "No JSON-LD / Schema.org found"
    }
  ],
  "llmsTxtPreview": "# GrapheneOS\n\n> GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.\n\n## Documentation\n- [FAQ](https://grapheneos.org/faq)\n\n## Main\n- [GrapheneOS: the private and secure mobile OS](https://grapheneos.org): GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.\n- [Features](https://grapheneos.org/features)\n- [GrapheneOS](https://grapheneos.org/)\n- [Install](https://grapheneos.org/install/)\n- [Build](https://grapheneos.org/build)\n- [Usage](https://grapheneos.org/usage)\n- [Releases](https://grapheneos.org/releases)\n- [Source](https://grapheneos.org/source)\n- [History](https://grapheneos.org/history/)\n- [Donate](https://grapheneos.org/donate)\n\n## Blog\n- [Articles](https://grapheneos.org/articles/)\n\n## Support\n- [FAQ](https://grapheneos.org/faq)\n- [Contact](https://grapheneos.org/contact)\n\n",
  "llmsTxtExisting": null,
  "emergingProtocols": {
    "oauthDiscovery": {
      "exists": false,
      "url": "https://grapheneos.org/.well-known/oauth-authorization-server"
    },
    "mcpServerCard": {
      "exists": false,
      "url": "https://grapheneos.org/.well-known/mcp.json"
    },
    "a2aAgentCard": {
      "exists": false,
      "url": "https://grapheneos.org/.well-known/agent.json"
    },
    "count": 0
  },
  "snippets": [
    {
      "id": "add_llms_txt",
      "title": "Create /llms.txt",
      "description": "Upload this file to your web root. It tells AI agents what your site is about and which pages matter.",
      "language": "markdown",
      "code": "# GrapheneOS\n\n> GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.\n\n## Documentation\n- [FAQ](https://grapheneos.org/faq)\n\n## Main\n- [GrapheneOS: the private and secure mobile OS](https://grapheneos.org): GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.\n- [Features](https://grapheneos.org/features)\n- [GrapheneOS](https://grapheneos.org/)\n- [Install](https://grapheneos.org/install/)\n- [Build](https://grapheneos.org/build)\n- [Usage](https://grapheneos.org/usage)\n- [Releases](https://grapheneos.org/releases)\n- [Source](https://grapheneos.org/source)\n- [History](https://grapheneos.org/history/)\n- [Donate](https://grapheneos.org/donate)\n\n## Blog\n- [Articles](https://grapheneos.org/articles/)\n\n## Support\n- [FAQ](https://grapheneos.org/faq)\n- [Contact](https://grapheneos.org/contact)\n\n",
      "filename": "/llms.txt"
    },
    {
      "id": "add_schema_org",
      "title": "Add Schema.org JSON-LD",
      "description": "Structured data helps AI agents understand the type, author, and purpose of your content.",
      "language": "html",
      "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"WebPage\",\n  \"name\": \"GrapheneOS: the private and secure mobile OS\",\n  \"description\": \"GrapheneOS is a security and privacy focused mobile OS with Android app compatibility.\",\n  \"url\": \"https://grapheneos.org\",\n  \"inLanguage\": \"en\",\n  \"isPartOf\": {\n    \"@type\": \"WebSite\",\n    \"name\": \"GrapheneOS\"\n  }\n}\n</script>",
      "filename": "<head>"
    },
    {
      "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\">"
        }
      ]
    }
  ]
}

Usa nuestra API para obtener esto de forma programática (próximamente)

Este JSON es para uso interno — a diferencia del Markdown y llms.txt, no está pensado para subirse a tu web. Guárdalo como referencia para seguir la evolución de tu puntuación, compártelo con tu equipo de desarrollo o intégralo en tu pipeline CI/CD.

Comparte tus resultados

O pide a una IA que te ayude a mejorarlo

¿Quieres una segunda opinión?

Cloudflare tiene un escáner gratuito y hace una pregunta distinta a la nuestra. Ellos puntúan lo que tu sitio publica para que los agentes lo invoquen: MCP server cards, Agent Skills, catálogos de API, registros DNS. Nosotros puntuamos si un agente puede llegar a tu contenido, leerlo y entenderlo. Un sitio puede ir bien en uno y mal en el otro, así que cuenta con ver dos cifras distintas: son respuestas a dos preguntas distintas, y las dos merecen conocerse.

Analizar grapheneos.org con Cloudflare

Incrusta tu badge

Añade este badge a tu sitio. Se actualiza automáticamente cuando cambie tu puntuación.

AgentReady.md score for grapheneos.org
Script Recomendado
<script src="https://agentready.md/badge.js" data-id="c9c6ac68-8fbc-4b47-84ac-00778dafbb81" data-domain="grapheneos.org"></script>
Markdown
[![AgentReady.md score for grapheneos.org](https://agentready.md/badge/grapheneos.org.svg)](https://agentready.md/es/r/c9c6ac68-8fbc-4b47-84ac-00778dafbb81)

Próximamente: Análisis de dominio completo

Rastrea todo tu dominio, genera llms.txt y monitoriza tu puntuación de preparación para IA a lo largo del tiempo. Únete a la lista de espera para recibir notificaciones.

¡Estás en la lista! Te avisaremos cuando se lance.