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

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

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

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

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

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

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

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

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

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

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