چرخش خلاقیت های تبلیغاتی

از یک فضای ذخیره‌سازی مشترک برای تعیین اینکه کاربر چه خلاقیتی را در سایت‌ها می‌بیند، استفاده کنید.

Shared Storage API یک پیشنهاد Privacy Sandbox برای اهداف عمومی، فضای ذخیره‌سازی بین سایتی است که از بسیاری از موارد استفاده ممکن پشتیبانی می‌کند. یکی از این نمونه ها چرخش خلاق است که برای آزمایش در کروم 104.0.5086.0 و نسخه های جدیدتر در دسترس است.

با چرخش خلاق، می‌توانید داده‌هایی مانند شناسه خلاق، تعداد بازدیدها و تعامل کاربر را ذخیره کنید تا مشخص کنید کاربران خلاق کدام یک را در سایت‌های مختلف می‌بینند.

یک Worklet Storage مشترک را اجرا کنید تا یک URL از لیست ارائه شده، بر اساس داده های ذخیره شده انتخاب کنید، و سپس آن را خلاقانه در یک قاب حصاردار ارائه کنید. این می تواند برای انتخاب تبلیغات جدید یا محتوای دیگر استفاده شود.

چرخش خلاقانه را امتحان کنید

برای آزمایش چرخش خلاقانه با فضای ذخیره‌سازی مشترک، تأیید کنید که از Chrome 104.0.5086.0 یا جدیدتر استفاده می‌کنید. همه APIهای حریم خصوصی تبلیغات را در chrome://settings/adPrivacy فعال کنید.

همچنین می‌توانید ذخیره‌سازی مشترک را با پرچم --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames در خط فرمان فعال کنید.

با نمونه کد آزمایش کنید

یک تبلیغ‌کننده یا یک تولیدکننده محتوا ممکن است بخواهد استراتژی‌های مختلفی را برای یک کمپین اعمال کند و محتواها یا خلاقیت‌ها را برای افزایش اثربخشی بچرخاند. از فضای ذخیره‌سازی مشترک می‌توان برای اجرای استراتژی‌های چرخش مختلف، مانند چرخش متوالی و چرخش با توزیع یکنواخت، در سایت‌های مختلف استفاده کرد.

در این مثال:

  • creative-rotation.js در یک قاب تعبیه شده است. این اسکریپت تعیین می‌کند که کدام تبلیغات مهم‌ترین (وزن) هستند، و برای تعیین اینکه کدام محتوا باید نمایش داده شود، به worklet فراخوانی می‌کند.
  • creative-rotation-worklet.js یک Worklet ذخیره سازی مشترک است که توزیع وزنی را برای محتویات و بازده هایی که باید نمایش داده شوند را تعیین می کند.

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

موارد استفاده کنید

اینها تنها برخی از موارد استفاده ممکن برای ذخیره سازی مشترک هستند. با دریافت بازخورد و کشف موارد استفاده جدید، به افزودن مثال‌ها ادامه خواهیم داد.

انتخاب محتوا

بر اساس اطلاعات جمع آوری شده در ذخیره سازی مشترک، محتوای مختلف را در وب سایت های مختلف در قاب های حصاردار انتخاب و نمایش دهید. دروازه خروجی برای این موارد استفاده، انتخاب URL است.

  • چرخش خلاق : داده‌هایی مانند شناسه خلاق، تعداد بازدیدها و تعامل کاربر را ذخیره کنید تا مشخص کنید کاربران خلاق کدام یک را در سایت‌های مختلف می‌بینند.
  • تست A/B : می‌توانید کاربر را به یک گروه آزمایشی اختصاص دهید، سپس آن گروه را در فضای ذخیره‌سازی مشترک ذخیره کنید تا از طریق سایت به آن دسترسی داشته باشید.
  • تجربیات کاربر سفارشی : اشتراک‌گذاری محتوای سفارشی و فراخوان‌ها برای اقدام بر اساس وضعیت ثبت نام کاربر یا سایر وضعیت‌های کاربر

ایجاد گزارش های خلاصه

اطلاعات را با ذخیره‌سازی مشترک جمع‌آوری کنید و یک گزارش خلاصه پر سر و صدا ایجاد کنید. دروازه خروجی برای این موارد استفاده، API تجمع خصوصی است.

  • اندازه گیری دسترسی منحصر به فرد : بسیاری از تولیدکنندگان محتوا و تبلیغ کنندگان می خواهند بدانند چه تعداد از افراد منحصر به فرد محتوای آنها را دیده اند. از فضای ذخیره‌سازی مشترک برای ضبط اولین باری که کاربر تبلیغ، ویدیوی جاسازی شده یا انتشارات شما را مشاهده کرد و از شمارش تکراری همان کاربر در سایت‌های مختلف جلوگیری کنید. سپس می توانید از Private Aggregation API برای خروجی یک گزارش خلاصه برای دسترسی خود استفاده کنید.
  • اندازه گیری جمعیت شناسی : تولیدکنندگان محتوا اغلب می خواهند اطلاعات جمعیتی مخاطبان خود را درک کنند. می‌توانید از «فضای ذخیره‌سازی مشترک» برای ثبت داده‌های جمعیتی کاربر در زمینه‌ای که آن‌ها را دارید، مانند سایت شخص اول خود، و از گزارش‌های انبوه برای گزارش آن در بسیاری از سایت‌های دیگر، مانند محتوای جاسازی شده، استفاده کنید.
  • اندازه‌گیری فرکانس K+ : گاهی اوقات به عنوان «فرکانس مؤثر» توصیف می‌شود، معمولاً قبل از اینکه کاربر محتوای خاصی را تشخیص دهد یا به خاطر بیاورد (اغلب در زمینه بازدیدهای تبلیغاتی) حداقل تعداد بازدید وجود دارد. می‌توانید از فضای ذخیره‌سازی مشترک برای ایجاد گزارش‌هایی از کاربران منحصربه‌فردی که محتوایی را حداقل K بار دیده‌اند، استفاده کنید.

مشارکت کنید و بازخورد را به اشتراک بگذارید

پیشنهاد ذخیره‌سازی مشترک در دست بحث فعال است و ممکن است در آینده تغییر کند. اگر این API را امتحان کردید و بازخورد دارید، مایلیم آن را بشنویم.