בחירת קריאייטיב לפי תדירות

מריצים worklet של Shared Storage כדי לבחור כתובת URL ולעבד אותה במסגרת מגודרת.

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

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

בדיקת בחירת הקריאייטיב לפי תדירות

כדי לבדוק את בחירת הקריאייטיב לפי תדירות באמצעות Shared Storage ו-Fenced Frames, עליכם לוודא שאתם משתמשים ב-Chrome מגרסה 104.0.5086.0 ואילך. הפעלת כל ממשקי ה-API לשמירה על פרטיות בפרסום במסגרת chrome://settings/adPrivacy.

אפשר להפעיל אחסון משותף גם באמצעות הדגל --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames בשורת הפקודה.

התנסות עם דוגמאות קוד

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

כשהלקוח קורא ל-sharedStorage.selectURL(), ה-worklet מריץ כתובת URL אטומה ומחזיר אותה לצורך עיבוד למסגרת מגודרת.

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

לאחר מכן, ה-worklet של האחסון המשותף קורא את הערכים שבאחסון המשותף, ומגדיל את המונה בכל תצוגה נוספת. אם הספירה לא הגיעה למגבלה המוגדרת מראש, מוחזר התוכן שרוצים לעבד (אינדקס 1). אחרת, מוחזר כתובת ה-URL המוגדרת כברירת מחדל (אינדקס 0).

בדוגמה הזו:

  • creative-selection-by-frequencyjs נטען דרך ה-iframe של יצרן התוכן או של המפרסם, והוא אחראי לטעינת ה-worklet של האחסון המשותף ולעבד את המקור האטום שהוחזר למסגרת מגודרת.
  • creative-selection-by-frequency-worklet.js הוא ה-workload של האחסון המשותף, שקורא את ספירת התדירות כדי לקבוע איזו כתובת URL מוחזרת עבור תוכן או קריאייטיב של מודעה.

creative-selection-by-frequency.js

// The first URL is the default content or ad to be rendered when the frequency limits reached.
const CONTENT_URLS = [
  { url: `https://${contentProducerUrl}/default-content.html` },
  { url: `https://${contentProducerUrl}/example-content.html` },
];

async function injectAd() {
  // Load the worklet module.
  await window.sharedStorage.worklet.addModule('creative-selection-by-frequency-worklet.js');

  // Set the initial frequency count
  window.sharedStorage.set('frequency-count', 0, {
    ignoreIfPresent: true,
  });

  // Run the URL selection operation to choose an ad based on the frequency count in shared storage.
  const fencedFrameConfig = await window.sharedStorage.selectURL('creative-selection-by-frequency', CONTENT_URLS, {
    resolveToConfig: true
  });

  // Render the opaque URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectAd();

creative-selection-by-frequency-worklet.js

const FREQUENCY_LIMIT = 5;

class CreativeSelectionByFrequencyOperation {
  async run(urls, data) {
    // Read the current frequency limit in shared storage
    const count = parseInt(await this.sharedStorage.get('frequency-count'));

    // Check if the frequency limit has been reached.
    if (count === FREQUENCY_LIMIT) {
      console.log('Frequency limit has been reached, and the default content will be rendered.');
      return 0;
    }

    // Set the new frequency count in shared storage
    await this.sharedStorage.set('frequency-count', count + 1);
    return 1;
  }
}

// Register the operation as 'creative-selection-by-frequency'.
register('creative-selection-by-frequency', CreativeSelectionByFrequencyOperation);

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

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

בחירת תוכן

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

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

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

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

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

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

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