Suscripciones y contenido de paga

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 mediante las propiedades de CreativeWork. Estos datos estructurados le permiten a Google diferenciar el contenido de paga del contenido con encubrimiento, una práctica que infringe nuestros lineamientos. 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",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://example.org/article"
      },
      "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"
      },
      "publisher": {
         "name": "The Exemplary Times",
         "@type": "Organization",
         "logo": {
            "@type": "ImageObject",
            "url": "https://example.org/logo.jpg"
         }
      },
      "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 los pasos que se detallan a continuación. 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"
      }
    }

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, and 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"]

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.

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 metaetiqueta robots noarchive.

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 mediante la metaetiqueta robots max-snippet.

Solución de problemas

Si tienes problemas para implementar datos estructurados, aquí tienes algunos recursos que pueden ayudarte.