Rotasi materi iklan

Menggunakan Penyimpanan Bersama untuk menentukan materi iklan yang dilihat pengguna di seluruh situs.

Shared Storage API adalah informasi Proposal sandbox untuk tujuan umum, penyimpanan lintas situs, yang mendukung banyak yang mungkin terjadi. Salah satu contohnya adalah rotasi materi iklan, yang tersedia untuk diuji di Chrome 104.0.5086.0 dan yang lebih baru.

Dengan rotasi materi iklan, Anda dapat menyimpan data, seperti ID materi iklan, tampilan jumlah pengguna, dan interaksi pengguna, untuk menentukan pengguna materi iklan lihat seluruh situs yang berbeda.

Jalankan worklet Penyimpanan Bersama untuk memilih URL dari daftar yang disediakan, berdasarkan menyimpan data, lalu merender materi iklan tersebut dalam frame dengan fence. Ini dapat digunakan untuk memilih iklan baru atau konten lainnya.

Coba rotasi materi iklan

Untuk bereksperimen dengan rotasi materi iklan dengan Penyimpanan Bersama, pastikan Anda menggunakan Chrome 104.0.5086.0 atau yang lebih baru. Aktifkan semua API privasi iklan di chrome://settings/adPrivacy.

Anda juga dapat mengaktifkan Shared Storage dengan tanda --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames di command line.

Bereksperimen dengan contoh kode

Pengiklan atau produser konten mungkin ingin menerapkan strategi berbeda untuk kampanye, dan merotasi konten atau materi iklan untuk meningkatkan efektivitas. Penyimpanan bersama dapat digunakan untuk menjalankan strategi rotasi yang berbeda, seperti rotasi berurutan dan rotasi merata, di berbagai situs yang berbeda.

Dalam contoh ini:

  • creative-rotation.js disematkan dalam frame. Skrip ini menetapkan iklan yang paling penting ( bobot), dan panggilan ke worklet untuk menentukan konten yang harus ditampilkan.
  • creative-rotation-worklet.js adalah worklet penyimpanan bersama yang menentukan distribusi berbobot untuk konten dan pengembalian yang harus ditampilkan.

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);

Kasus penggunaan

Ini hanyalah beberapa kemungkinan kasus penggunaan Penyimpanan Bersama. Kita akan terus menambahkan contoh saat kita menerima masukan dan menemukan kasus penggunaan baru.

Pemilihan konten

Pilih dan tampilkan konten yang berbeda pada situs web yang berbeda di frame dengan fence berdasarkan informasi yang dikumpulkan di Penyimpanan Bersama. Gateway output untuk kasus penggunaan ini adalah pemilihan URL.

  • Rotasi materi iklan: Menyimpan data, seperti ID materi iklan, jumlah penayangan, dan interaksi pengguna, untuk menentukan pengguna materi iklan lihat di berbagai situs.
  • Pengujian A/B: Anda dapat menetapkan pengguna ke sebuah grup eksperimen, lalu menyimpan grup tersebut di Shared Storage untuk diakses lintas situs.
  • Pengalaman pengguna kustom: Bagikan konten kustom dan pesan ajakan (CTA) berdasarkan status pendaftaran pengguna atau status pengguna lain

Membuat laporan ringkasan

Mengumpulkan informasi dengan Penyimpanan Bersama dan membuat laporan ringkasan gabungan yang berisik. Gerbang output untuk kasus penggunaan ini adalah Private Aggregation API.

  • Pengukuran jangkauan unik: Banyak produser dan pengiklan konten ingin mengetahui berapa banyak orang melihat konten mereka. Menggunakan Penyimpanan Bersama untuk merekam saat pertama kali pengguna melihat iklan, video yang disematkan, atau publikasi, dan mencegah duplikat menghitung pengguna yang sama di situs yang berbeda. Kemudian, Anda dapat menggunakan Private Aggregation API guna menghasilkan laporan ringkasan untuk jangkauan Anda.
  • Pengukuran demografi: Produser konten sering kali ingin memahami demografi audiens Anda. Anda dapat menggunakan Penyimpanan Bersama untuk merekam data demografis pengguna di konteks di mana Anda memilikinya, seperti situs pihak pertama, dan menggunakan data pelaporan untuk melaporkannya di banyak situs lain, seperti konten yang disematkan.
  • Pengukuran frekuensi K+: Terkadang digambarkan sebagai "frekuensi efektif," sering kali ada jumlah minimum penayangan sebelum pengguna mengenali atau mengingat konten tertentu (sering kali dalam konteks tampilan iklan). Anda dapat menggunakan Penyimpanan Bersama untuk membuat laporan pengguna unik yang telah melihat suatu konten setidaknya K kali.

Berinteraksi dan memberikan masukan

Proposal Penyimpanan Bersama sedang dalam diskusi aktif dan dapat berubah sewaktu-waktu di masa mendatang. Jika Anda mencoba API ini dan memiliki masukan, kami ingin sekali mendengarnya.