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

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

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

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

מריצים וורקלט של אחסון משותף כדי לבחור כתובת 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 של Shared Storage שקובע את ההפצה המשוקללת של התוכן ומחזיר את התוכן שצריך להציג.

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

תרחישים לדוגמה

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

בחירת תוכן

לבחור תוכן שונה ולהציג אותו באתרים שונים במסגרות מגודרות על סמך מידע שנאסף באחסון המשותף. שער הפלט בתרחישי השימוש האלה הוא בחירת כתובת URL.

  • רוטציה של נכסי קריאייטיב: אחסון נתונים, כמו מזהה הקריאייטיב, מספר הצפיות ואינטראקציה של משתמשים, כדי לקבוע אילו נכסי קריאייטיב המשתמשים יראו באתרים שונים.
  • בדיקות A/B: אפשר להקצות משתמש לקבוצת ניסוי, ולאחר מכן לאחסן את הקבוצה הזו באחסון המשותף כדי לגשת אליה באתרים שונים.
  • חוויית משתמש מותאמת אישית: תוכלו לשתף תוכן בהתאמה אישית קריאות לפעולה על סמך סטטוס ההרשמה של המשתמש או מצבים אחרים של המשתמש.

יצירת דוחות סיכום

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

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

יצירת מעורבות ושיתוף משוב

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

נשמח לשמוע את דעתכם על Shared Storage API.

אפשר להתעדכן

  • רשימת תפוצה: כדאי להירשם לרשימת התפוצה שלנו כדי לקבל את העדכונים וההודעות האחרונים שקשורים ל-Shared Storage API.

רוצה לקבל עזרה?