Rotar creatividades de anuncios

Usa un almacenamiento compartido para determinar qué creatividad ve un usuario en todos los sitios.

La API de Shared Storage es una propuesta de Privacy Sandbox para el almacenamiento general y entre sitios, que admite muchos casos de uso posibles. Un ejemplo de esto es la rotación de creatividades, que está disponible para probar en Chrome 104.0.5086.0 y versiones posteriores.

Con la rotación de creatividades, puedes almacenar datos, como el ID de creatividad, los recuentos de vistas y la interacción del usuario, para determinar qué creatividades ven los usuarios en diferentes sitios.

Ejecuta una tarea de trabajo de almacenamiento compartido para seleccionar una URL de una lista proporcionada, según los datos almacenados, y, luego, renderiza esa creatividad en un marco cercado. Se puede usar para seleccionar anuncios nuevos o cualquier otro contenido.

Prueba la rotación de creatividades

Para experimentar con la rotación de creatividades con el almacenamiento compartido, confirma que estás usando Chrome 104.0.5086.0 o una versión posterior. Habilita todas las APIs de privacidad en los anuncios en chrome://settings/adPrivacy.

También puedes habilitar el almacenamiento compartido con la marca --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames en la línea de comandos.

Experimenta con muestras de código

Es posible que un anunciante o un productor de contenido desee aplicar diferentes estrategias a una campaña y rotar el contenido o las creatividades para aumentar la eficacia. El almacenamiento compartido se puede usar para ejecutar diferentes estrategias de rotación, como la rotación secuencial y la rotación distribuida de forma uniforme, en diferentes sitios.

En este ejemplo:

  • creative-rotation.js está incorporado en un marco. Esta secuencia de comandos establece qué anuncios son los más importantes ( peso) y llama a la worklet para determinar qué contenido se debe mostrar.
  • creative-rotation-worklet.js es la worklet de almacenamiento compartido que determina la distribución ponderada del contenido y los resultados que se deben mostrar.

creative-rotation.js

// Ad config with the URL of the content, a probability weight for rotation, and the clickthrough rate.
const DEMO_CONTENT_CONFIG = [
  {
    url: 'https://your-server.example/contents/content-1.html',
    weight: 0.7,
  },
  {
    url: 'https://your-server.example/contents/content-2.html',
    weight: 0.2,
  },
  {
    url: 'https://your-server.example/contents/content-3.html',
    weight: 0.1,
  },
];

// Set the mode to sequential and set the starting index to 0.
async function seedStorage() {
  await window.sharedStorage.set('content-rotation-mode', 'sequential', {
    ignoreIfPresent: true,
  });

  await window.sharedStorage.set('content-rotation-index', 0, {
    ignoreIfPresent: true,
  });
}

async function injectAd() {
  // Load the worklet module
  await window.sharedStorage.worklet.addModule('creative-rotation-worklet.js');

  // Initially set the storage to sequential mode for the demo
  seedStorage();

  // Run the URL selection operation to determine the next content rendered.
  const urls = DEMO_CONTENT_CONFIG.map(({ url }) => ({ url }));
  const fencedFrameConfig = await window.sharedStorage.selectURL('content-rotation', urls, {
    data: DEMO_CONTENT_CONFIG,
    resolveToConfig: true
  });

  // Render the opaque URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectAd();

creative-rotation-worklet.js

class SelectURLOperation {
  async run(urls, data) {
    // Read the rotation mode from Shared Storage
    const rotationMode = await sharedStorage.get('content-rotation-mode');

    // Generate a random number to be used for rotation
    const randomNumber = Math.random();

    let index;

    switch (rotationMode) {
      /**
       * Sequential rotation
       * - Rotates the contents in order
       * - Example: A -> B -> C -> A ...
       */
      case 'sequential':
        const currentIndex = await sharedStorage.get('creative-rotation-index');
        index = parseInt(currentIndex, 10);
        const nextIndex = (index + 1) % urls.length;

        await sharedStorage.set('content-rotation-index', nextIndex);
        break;

      /**
       * Weighted rotation
       * - Rotates the contentswith weighted probability
       * - Example: A=70% / B=20% / C=10%
       */
      case 'weighted-distribution':
        
        // Sum the weights cumulatively, and find the first URL where the
        // sum exceeds the random number. The array is sorted in
        // descending order first.
        let weightSum = 0;
        const { url } = data
          .sort((a, b) => b.weight - a.weight)
          .find(({ weight }) => {
            weightSum += weight;
            return weightSum > randomNumber;
          });

        index = urls.indexOf(url);
        break;

      default:
        index = 0;
    }
    return index;
  }
}

register('content-rotation', SelectURLOperation);

使用场景

以上仅列举了共享存储空间的一些可能用例。随着我们收到反馈并发现新的使用场景,我们会继续添加示例。

内容选择

根据在共享存储空间中收集的信息,在围栏框架中选择并显示不同网站上的不同内容。这些用例的输出门限是网址选择。

  • 广告素材轮替:存储广告素材 ID、观看次数和用户互动等数据,以确定用户在不同网站上看到的广告素材。
  • A/B 测试:您可以将用户分配到实验组,然后将该组存储在共享存储空间中,以便跨网站访问。
  • 自定义用户体验:根据用户的注册状态或其他用户状态分享自定义内容和号召性用语

生成摘要报告

使用共享存储空间收集信息,并生成包含噪声的汇总摘要报告。这些用例的输出网关是不公开汇总 API

  • 衡量覆盖的唯一身份用户数:许多内容制作者和广告客户都希望了解其内容的覆盖面(即看到过其内容的唯一身份用户数)。使用共享存储空间可记录用户首次看到您的广告、嵌入的视频或发布内容的时间,并防止在不同网站上重复统计同一用户。然后,您可以使用 Private Aggregation API 输出覆盖面摘要报告。
  • 受众特征衡量:内容创作者通常希望了解其观众的受众特征。您可以使用共享存储空间在拥有用户特征数据的情境(例如您的第一方网站)中记录用户特征数据,并使用汇总报告在许多其他网站(例如嵌入式内容)中生成关于这些数据的报告。
  • “K+”频次衡量:有时也称为“有效频次”,通常需要达到最低观看次数,用户才能识别或回想某些内容(通常是在广告观看情境中)。您可以使用共享存储空间生成报告,了解至少观看了某项内容 K 次的唯一身份用户。

Interactúa y comparte comentarios

Ten en cuenta que la propuesta de la API de Shared Storage está en discusión y desarrollo activo y, por lo tanto, está sujeta a cambios.

Nos encantaría conocer tu opinión sobre la API de Shared Storage.

Mantente al tanto

  • Lista de distribución: Suscríbete a nuestra lista de distribución para recibir las actualizaciones y los anuncios más recientes relacionados con la API de Shared Storage.

¿Necesitas ayuda?