Datos estructurados de suscripciones y contenido de paga (CreativeWork)

En esta página, se describe cómo usar el método JSON-LD de schema.org para indicar el contenido de paga de tu sitio con las propiedades de CreativeWork. Estos datos estructurados le permiten a Google diferenciar el contenido de paga de la práctica de encubrimiento, que infringe las políticas de spam. Obtén más información sobre las suscripciones y el contenido de paga.

Ejemplo

Este es un ejemplo de los datos estructurados de NewsArticle con contenido de paga.

<html>
  <head>
    <title>Article headline</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "NewsArticle",
      "headline": "Article headline",
      "image": "https://example.org/thumbnail1.jpg",
      "datePublished": "2025-02-05T08:00:00+08:00",
      "dateModified": "2025-02-05T09:20:00+08:00",
      "author": {
        "@type": "Person",
        "name": "John Doe",
        "url": "https://example.com/profile/johndoe123"
      },
      "description": "A most wonderful article",
      "isAccessibleForFree": false,
      "hasPart":
        {
        "@type": "WebPageElement",
        "isAccessibleForFree": false,
        "cssSelector" : ".paywall"
        }
    }
    </script>
  </head>
  <body>
    <div class="non-paywall">
      Non-Paywalled Content
    </div>
    <div class="paywall">
      Paywalled Content
    </div>
  </body>
</html>

Lineamientos

Si deseas que tu página aparezca en los resultados de la Búsqueda, debes seguir los lineamientos generales para datos estructurados y los lineamientos técnicos. Además, se aplican los siguientes lineamientos al contenido de paga:

  • Se aceptan los formatos de JSON-LD y de microdatos para especificar los datos estructurados del contenido de paga.
  • No anides las secciones de contenido.
  • Usa solo selectores .class para la propiedad cssSelector.

Cómo agregar lenguaje de marcado al contenido de paga

Si ofreces acceso al contenido de tu sitio basado en suscripciones, o bien si los usuarios deben registrarse para acceder a cualquier contenido que quieres que se indexe, sigue estos pasos. El siguiente ejemplo se aplica a los datos estructurados de NewsArticle. Asegúrate de seguir estos pasos en todas las versiones de tu página (lo que incluye AMP y no AMP).

  1. Agrega un nombre de clase en cada sección de paga de la página. Por ejemplo:
    <body>
    <p>This content is outside a paywall and is visible to all.</p>
    <div class="paywall">This content is inside a paywall, and requires a subscription or registration.</div>
    </body>
  2. Agrega datos estructurados de NewsArticle.
  3. Agrega los datos estructurados de JSON-LD que se muestran resaltados a los de NewsArticle.
    {
    "@context": "https://schema.org",
    "@type": "NewsArticle",
    "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.org/article"
    },
    (...)
    "isAccessibleForFree": false,
    "hasPart": {
    "@type": "WebPageElement",
    "isAccessibleForFree": false,
    "cssSelector": ".paywall"
    }
    }
  4. Valida tu código con la Prueba de resultados enriquecidos y corrige cualquier error crítico.

Varias secciones de paga

Si tu página tiene varias secciones de este tipo, agrega los nombres de clase como un array.

Este es un ejemplo de las secciones de paga en una página:

<body>
<div class="section1">This content is inside a paywall, and requires a subscription or registration.</div>
<p>This content is outside a paywall and is visible to all.</p>
<div class="section2">This is another section that's inside a paywall, or requires a subscription or registration.</div>
</body>

Aquí hay un ejemplo de datos estructurados de NewsArticle con varias secciones de paga.

{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.org/article"
    },
  (...)
  "isAccessibleForFree": false,
  "hasPart": [
    {
      "@type": "WebPageElement",
      "isAccessibleForFree": false,
      "cssSelector": ".section1"
    }, {
      "@type": "WebPageElement",
      "isAccessibleForFree": false,
      "cssSelector": ".section2"
    }
  ]
}

Tipos compatibles

Este lenguaje de marcado es compatible con el tipo CreativeWork o uno de los siguientes tipos de CreativeWork más específicos:

Puedes usar varios tipos de schema.org, como los siguientes:

"@type": ["Article", "LearningResource"]

Debes incluir las propiedades obligatorias para que Google comprenda que tu artículo tiene contenido de paga. Puedes agregar las propiedades recomendadas para obtener un mayor nivel de detalle sobre qué secciones de una página están detrás de un muro de pago (o que requieren una suscripción o un registro).

Propiedades obligatorias
isAccessibleForFree

Boolean

Si el artículo es accesible para todos o si está protegido por un muro de pago (o si requiere una suscripción o un registro). Establece la propiedad isAccessibleForFree en false para especificar que esta sección está detrás de un muro de pago.

Propiedades recomendadas
hasPart.cssSelector

CssSelectorType

Un selector de CSS que hace referencia al nombre de clase que estableciste en el HTML para especificar la sección de muro de pago.

hasPart.@type

Text

Establece la @type en WebPageElement.

hasPart.isAccessibleForFree

Boolean

Indica si esta sección del artículo está protegida por un muro de pago (o si requiere una suscripción o un registro). Establece la propiedad isAccessibleForFree en False para especificar que esta sección está detrás de un muro de pago.

Consideraciones para AMP

A continuación se muestra una lista de consideraciones que te resultarán útiles si usas páginas de AMP:

  • Si tienes una página de AMP con contenido de paga, usa amp-subscriptions cuando corresponda.
  • Asegúrate de que el extremo de autorización otorgue acceso al contenido a los bots de Google y de otros buscadores. Este acceso varía para cada publicador.
  • Asegúrate de que se use la misma política de acceso para bots en páginas de AMP y que no son de AMP. En caso contrario, en Search Console podrían aparecer errores de diferencia en el contenido.

Consideraciones sobre la IA generativa en la Búsqueda

Las descripciones generales de SGE (Experiencia generativa de la Búsqueda) se generan con la ayuda de la IA. Se basan en información proveniente de toda la Web y del Gráfico de conocimiento de Google, una colección de información sobre personas, lugares y cosas. El contenido bloqueado con controles de fragmentos no se mostrará en las descripciones generales.

SGE está diseñada para ayudar a las personas a descubrir información útil en la Web que respalda los datos de la descripción general y proporciona un punto de partida para que las personas exploren más a fondo. Al igual que en la Búsqueda en términos más generales, las descripciones generales de la SGE pueden incluir vínculos a contenido de paga para que las personas descubran esas páginas.

SGE durante la navegación, una función independiente de SGE en la Búsqueda, no mostrará los puntos clave para los artículos de paga si aparecen datos estructurados de muro de pago en la página.

Cómo asegurarse de que Google pueda rastrear e indexar tus páginas

Si quieres que Google rastree y también indexe tu contenido, incluidas las secciones de paga, asegúrate de que Googlebot y Googlebot-News (si corresponde) puedan acceder a tu página.

Usa la herramienta de inspección de URL para probar cómo Google rastrea y procesa una URL en tu sitio.

Controla qué información se muestra en los resultados de la Búsqueda

Para evitar que Google muestre un vínculo en caché de tu página, usa la etiqueta noarchive robots meta.

Para excluir ciertas secciones del contenido en los fragmentos de los resultados de la Búsqueda, usa el atributo HTML data-nosnippet. También puedes limitar la cantidad de caracteres que puede tener un fragmento de resultado de la Búsqueda con la etiqueta max-snippet robots meta.

Solución de problemas

Si tienes problemas para implementar o depurar datos estructurados, te brindamos algunos recursos que podrían resultarte útiles.