Ruota creatività degli annunci

Utilizza uno spazio di archiviazione condiviso per determinare quale creatività viene visualizzata da un utente nei siti.

L'API Shared Storage è una soluzione Proposta di sandbox per uso generico, archiviazione cross-site, che supporta molti e i possibili casi d'uso. Un esempio è la rotazione creatività, disponibile per il test in Chrome 104.0.5086.0 e versioni successive.

Con la rotazione creatività, puoi memorizzare dati quali ID creatività, visualizzazione conteggi e l'interazione dell'utente, per determinare quali guarda attraverso siti diversi.

Esegui un worklet dello spazio di archiviazione condiviso per selezionare un URL da un elenco fornito, in base alla archiviati di dati ed eseguire il rendering della creatività in un frame recintato. Si può usare per selezionare nuovi annunci o altri contenuti.

Prova la rotazione creatività

Per sperimentare la rotazione delle creatività con l'Archiviazione condivisa, verifica di utilizzare Chrome 104.0.5086.0 o versioni successive. Attiva tutte le API di privacy per gli annunci in chrome://settings/adPrivacy.

Puoi anche abilitare Archiviazione condivisa con il flag --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames nella riga di comando.

Sperimenta con gli esempi di codice

Un inserzionista o un produttore di contenuti potrebbe voler applicare strategie diverse a un una campagna e ruotare contenuti o creatività per aumentarne l'efficacia. Lo spazio di archiviazione condiviso può essere usato per eseguire diverse strategie di rotazione, come la rotazione sequenziale e la rotazione a distribuzione uniforme tra siti diversi.

In questo esempio:

  • creative-rotation.js è incorporato in un frame. Questo script imposta gli annunci più importanti ( ponderazione) e richiama il worklet per stabilire quali contenuti visualizzare.
  • creative-rotation-worklet.js è il worklet dello spazio di archiviazione condiviso che determina la distribuzione ponderata dei contenuti e i resi che devono essere visualizzati.

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('content-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);

Casi d'uso

Questi sono solo alcuni dei possibili casi d'uso dell'archiviazione condivisa. Lo faremo ad aggiungere esempi mentre ricevere feedback e scoprire nuovi casi d'uso.

Selezione contenuti

Seleziona e visualizza contenuti diversi su siti web diversi in frame recintati in base alle informazioni raccolte in Archiviazione condivisa. Il gate di output per questi casi d'uso è la selezione dell'URL.

  • Rotazione creatività: Archivia i dati, come l'ID creatività, il numero di visualizzazioni e l'interazione dell'utente, per stabilire quali vedere su diversi siti.
  • Test A/B: Puoi assegnare un utente a un gruppo sperimentale e poi archiviarlo in Archiviazione condivisa per accedervi tra siti.
  • Esperienze utente personalizzate: Condividi contenuti personalizzati e inviti all'azione in base allo stato di registrazione o ad altri stati dell'utente

Generare report di riepilogo.

Raccogliere informazioni con l'archiviazione condivisa e generato un report di riepilogo aggregato e rumore. Il gate di output per questi casi d'uso è API Private Aggregation.

  • Misurazione della copertura unica: Molti produttori di contenuti e inserzionisti vogliono sapere quanti sono persone hanno visto i loro contenuti. Usare l'archiviazione condivisa per registrare la prima volta che un utente visto il tuo annuncio, il tuo video incorporato o la tua pubblicazione ed evitare duplicati conteggio dello stesso utente su siti diversi. Potrai quindi utilizzare l'API Private Aggregation per generare un report di riepilogo per la tua copertura.
  • Misurazione dei dati demografici: I produttori di contenuti spesso vogliono conoscere i dati demografici dei loro pubblico. Puoi utilizzare Shared Storage per registrare i dati demografici degli utenti in un contesto in cui si trova, ad esempio il sito proprietario, e utilizzano dati aggregati creare report su di essi su molti altri siti, come i contenuti incorporati.
  • Misurazione della frequenza K+: A volte descritto come "frequenza effettiva", spesso c'è un numero minimo visualizzazioni prima che un utente riconosca o richiami determinati contenuti (spesso nel nel contesto delle visualizzazioni dell'annuncio). Puoi utilizzare lo spazio di archiviazione condiviso per creare report di utenti unici che hanno visto un determinato contenuto almeno K di volte.

Interagisci e condividi il feedback

La proposta di spazio di archiviazione condiviso è in fase di discussione attiva ed è soggetta a modifiche in futuro. Se provi questa API e hai feedback, ci piacerebbe conoscere la tua opinione.