סבב בין נכסי הקריאייטיב של המודעות

כדאי להשתמש בנפח אחסון משותף כדי לקבוע איזה קריאייטיב משתמש יראה באתרים שונים.

Shared Storage API הוא הצעה של ארגז חול לפרטיות לשימוש כללי, אחסון באתרים שונים, שתומך בהרבה תרחישים אפשריים של שימוש. דוגמה כזו היא סבב של נכסי קריאייטיב, שזמינה לבדיקה ב-Chrome בגרסה 104.0.5086.0 ואילך.

סבב נכסי קריאייטיב מאפשר לאחסן נתונים כמו מזהה קריאייטיב, ספירת צפיות ואינטראקציה של משתמשים, כדי לקבוע אילו משתמשי קריאייטיב יראו באתרים שונים.

מריצים worklet של Shared Storage כדי לבחור כתובת URL מרשימה נתונה, על סמך הנתונים המאוחסנים, ואז מעבדים את הקריאייטיב הזה במסגרת מגודרת. ניתן להשתמש בו כדי לבחור מודעות חדשות או תוכן אחר.

כדאי לנסות את סבב הקריאייטיב

כדי להתנסות בסבב קריאייטיב עם נפח אחסון משותף, יש לוודא שאתם משתמשים ב-Chrome בגרסה 104.0.5086.0 ואילך. לאחר מכן מפעילים את הסימון של ניסוי בממשקי ה-API של ארגז החול לפרטיות בכתובת chrome://flags/#privacy-sandbox-ads-apis.

הפעלת הניסוי של ממשקי ה-API של מודעות ארגז החול לפרטיות כך שאפשר יהיה להשתמש בהם

ניתן להפעיל אחסון משותף גם באמצעות הדגל --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 this.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 this.sharedStorage.get('creative-rotation-index');
        index = parseInt(currentIndex, 10);
        const nextIndex = (index + 1) % urls.length;

        await this.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 Testing: אפשר להקצות משתמש לקבוצת ניסוי, ואז לאחסן את הקבוצה באחסון משותף ולאפשר גישה אליה באתרים שונים.
  • חוויות משתמש בהתאמה אישית: שיתוף תוכן וקריאות לפעולה בהתאמה אישית על סמך סטטוס ההרשמה של המשתמש או מצבי משתמש אחרים

הפקת דוחות סיכום

איסוף מידע באמצעות 'נפח אחסון משותף' והפקת דוח סיכום מצטבר ורועש. שער הפלט לתרחישים לדוגמה האלה הוא Private Aggregation API.

  • מדידת היקף החשיפה למשתמשים ייחודיים: יוצרים ומפרסמים רבים של תוכן רוצים לדעת כמה אנשים ייחודיים ראו את התוכן שלהם. אפשר להשתמש באחסון משותף כדי לתעד את הפעם הראשונה שבה משתמש ראה את המודעה, את הסרטון המוטמע או את אתר החדשות שלכם, ולמנוע ספירה כפולה של אותו משתמש באתרים שונים. לאחר מכן אפשר להשתמש ב-Private Aggregation API כדי להפיק דוח סיכום לגבי היקף החשיפה.
  • מדידת הדמוגרפיה: לעיתים קרובות יצרני תוכן רוצים להבין את הדמוגרפיה של הקהל שלהם. אפשר להשתמש באחסון משותף כדי לתעד נתונים דמוגרפיים של משתמשים בהקשר שבו הם נמצאים, למשל באתר של צד ראשון, ולהשתמש בדיווח מצטבר כדי לדווח על הנתונים האלה באתרים רבים אחרים, כמו תוכן מוטמע.
  • מדידת התדירות ב-K+: לעיתים קרובות יש מספר מינימלי של צפיות לפני שהוא יזהה תוכן מסוים או יזכור אותו (לרוב בהקשר של צפיות במודעה). אפשר להשתמש בנפח אחסון משותף כדי ליצור דוחות של משתמשים ייחודיים שראו קטע תוכן לפחות K פעמים.

עניין ושיתוף משוב

ההצעה לנפח אחסון משותף נמצאת בדיון פעיל והיא כפופה לשינויים בעתיד. אם ניסית את ה-API הזה ויש לך משוב, נשמח לשמוע אותו.