किसी विज्ञापन स्लॉट को खरीदने के लिए नीलामी में बोली लगाएं

एक विज्ञापन खरीदार (डीएसपी और विज्ञापन देने वाले) के तौर पर, आपकी दिलचस्पी प्रकाशक की साइट पर होने वाली Protected Audience विज्ञापन नीलामी में हिस्सा लेने में हो सकती है. इसका मकसद, विज्ञापन देने वाले व्यक्ति या कंपनी की साइट पर तय किए गए इंटरेस्ट ग्रुप के लिए विज्ञापन को टारगेट करना है. Protected Audience API से जुड़ी नीलामी में हिस्सा लेकर, अन्य साइटों पर मौजूद अपने ग्राहकों तक पहुंचा जा सकता है. इस दौरान, आपकी निजता को सुरक्षित रखा जाता है.

Protected Audience API से जुड़ी नीलामी में, आपको बिड जनरेट करने के लिए लॉजिक देना होता है. इसके बाद, ब्राउज़र उस लॉजिक का इस्तेमाल करके बिड को कैलकुलेट करता है. यह नीलामी के अन्य आर्किटेक्चर से अलग है, जहां लॉजिक देने के बजाय सीधे बिड सबमिट की जाती है.

बोली जनरेट करने वाला लॉजिक, generateBid() JavaScript फ़ंक्शन में दिया जाता है और फ़ाइल आपके सर्वर पर होस्ट की जाती है. जब किसी उपयोगकर्ता को इंटरेस्ट ग्रुप में जोड़ा जाता है, तो इस फ़ाइल की जगह की जानकारी को इंटरेस्ट ग्रुप के कॉन्फ़िगरेशन में biddingLogicUrl के तौर पर भेज दिया जाता है.

नीलामी के दौरान, ब्राउज़र biddingLogicUrl फ़ील्ड में बताए गए बिडिंग लॉजिक को फ़ेच करता है. साथ ही, दिलचस्पी के हर ग्रुप के लिए, आपके generateBid() फ़ंक्शन को सुरक्षित आइसोलेटेड एनवायरमेंट में एक्ज़ीक्यूट करता है जो बाहरी कॉन्टेक्स्ट के साथ जानकारी शेयर करने की अनुमति नहीं देता. generateBid() के एक्ज़ीक्यूट होने पर ब्राउज़र, फ़ंक्शन में आर्ग्युमेंट के तौर पर सिग्नल पास करता है. इन सिग्नल में अलग-अलग सोर्स से मिली कई जानकारी शामिल होती है. जैसे, पब्लिशर का पहले पक्ष (ग्राहक) का डेटा, सेलर का डेटा, रीयल-टाइम डेटा वगैरह. इन सिग्नल का इस्तेमाल करके बिड का हिसाब लगाया जा सकता है और वैल्यू generateBid() कॉल से वापस मिलती है. बिड सबमिट होने के बाद, ब्राउज़र हर बिड पर सेलर के स्कोरिंग लॉजिक को लागू करेगा, ताकि सेलर के ज़रूरी स्कोर का हिसाब लगाया जा सके.

generateBid()

generateBid() फ़ंक्शन के आर्ग्युमेंट और फ़ंक्शन से दिखाई गई बिड के स्ट्रक्चर के बारे में यहां बताया गया है:


generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  return {
    ad: adObject,
    adCost: optionalAdCost,
    bid: bidValue,
    bidCurrency: 'USD',
    render: {
      url: renderURL,
      width: renderWidth,
      height: renderHeight
    },
    adComponents: [
      {url: adComponent1, width: componentWidth1, height: componentHeight1},
      {url: adComponent2, width: componentWidth2, height: componentHeight2},
      // ...
    ],
    allowComponentAuction: false,
    modelingSignals: 123 // 0-4095 integer (12-bits)
  };
}

तर्क

generateBid() में ये आर्ग्युमेंट इस्तेमाल किए जाते हैं:

आर्ग्यूमेंट भूमिका

interestGroup

विज्ञापन खरीदार के ज़रिए पास किया गया ऑब्जेक्ट. एक जैसी दिलचस्पी वाले ग्रुप को dailyUpdateUrl से अपडेट किया जा सकता है.

auctionSignals

नीलामी कॉन्फ़िगरेशन आर्ग्युमेंट की ऐसी प्रॉपर्टी जिसे सेलर ने navigator.runAdAuction() को पास किया है. इससे पेज के कॉन्टेक्स्ट (जैसे कि विज्ञापन का साइज़ और पब्लिशर आईडी), नीलामी के टाइप (फ़र्स्ट-प्राइस या सेकंड-प्राइस) और दूसरे मेटाडेटा के बारे में जानकारी मिलती है.

perBuyerSignals

नीलामी के कॉन्फ़िगरेशन के तर्क वाली ऐसी प्रॉपर्टी जिसे सेलर ने पास किया है. यह खरीदार के सर्वर से पेज के बारे में प्रासंगिक सिग्नल दे सकता है, अगर विक्रेता एक SSP है जो खरीदार के सर्वर को रीयल-टाइम बिडिंग कॉल करता है और जवाब को वापस भेजता है या अगर प्रकाशक पेज सीधे खरीदार के सर्वर से संपर्क करता है. अगर ऐसा है, तो हो सकता है कि खरीदार, छेड़छाड़ से सुरक्षा के लिए generateBid() में उन सिग्नल के क्रिप्टोग्राफ़िक हस्ताक्षर की जांच करना चाहे.

trustedBiddingSignals

एक ऐसा ऑब्जेक्ट जिसकी कुंजियां, इंटरेस्ट ग्रुप के लिए trustedBiddingSignalsKeys हैं. साथ ही, जिनकी वैल्यू trustedBiddingSignals अनुरोध में दिखती हैं.

browserSignals

ब्राउज़र का बनाया हुआ कोई ऑब्जेक्ट, जिसमें पेज के कॉन्टेक्स्ट (जैसे कि मौजूदा पेज का hostname, जिसे सेलर आम तौर पर नकली कर सकता है) की जानकारी और खुद इंटरेस्ट ग्रुप का डेटा (जैसे कि ग्रुप ने पिछली बार कब कोई नीलामी जीती थी, उसका रिकॉर्ड, जो उपयोगकर्ता के डिवाइस पर फ़्रीक्वेंसी कैपिंग की अनुमति देता है) हो सकता है.

directFromSellerSignals

ऐसे सिग्नल जो किसी खास सेलर से मिलने की गारंटी देते हैं. हालांकि, auctionSignals और sellerSignals के बजाय, ये सिग्नल किसी ऐसे व्यक्ति से मिल सकते हैं जो runAdAuction को एक्ज़ीक्यूट करने की कोशिश करता है.

ब्राउज़र के सिग्नल

browserSignals ऑब्जेक्ट में ये प्रॉपर्टी हैं:

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  topLevelSeller: 'https://www.top-level-ssp.com',
  requestedSize: {width: 100, height: 200},  /* if specified in auction config */
  joinCount: 3,
  recency: 3600000,
  bidCount: 17,
  prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
  wasmHelper: ...
  dataVersion: 1,
  adComponentsLimit: 40
}
प्रॉपर्टी ब्यौरा

topWindowHostname

runAdAuction() पर कॉल करने का होस्टनेम.

seller

वह विक्रेता जिसे बिड सबमिट की गई है. कॉम्पोनेंट की नीलामी में, यह वैल्यू कॉम्पोनेंट सेलर होती है.

topLevelSeller

कॉम्पोनेंट नीलामी में, सबसे ऊपर का सेलर और सिर्फ़ कॉम्पोनेंट नीलामी में मौजूद होता है.

requestedSize

requestedSize प्रॉपर्टी, नीलामी के लिए फ़्रेम साइज़ का सुझाव देती है. सेलर, अनुरोध किए गए साइज़ को नीलामी के कॉन्फ़िगरेशन में सेट करता है. इससे वह वैल्यू, generateBid() में बिड करने वाले लोगों के लिए उपलब्ध हो जाती है. नीलामी में बिड करने वाले लोग, विज्ञापन के लिए कॉन्टेंट का अलग साइज़ चुन सकते हैं. इससे मिलने वाला साइज़, एलिमेंट के कंटेनर साइज़ में फ़िट होने के लिए विज़ुअल तौर पर स्केल किया जाएगा.

joinCount

joinCount फ़ील्ड से पता चलता है कि पिछले 30 दिनों में यह डिवाइस, दिलचस्पी वाले इस ग्रुप में कितनी बार शामिल हुआ है. इस दौरान, इंटरेस्ट ग्रुप से जुड़े डेटा को लगातार सेव किया जाता है. इसका मतलब है कि सदस्यता छोड़ने या सदस्यता खत्म होने की वजह से, डिवाइस पर इंटरेस्ट ग्रुप के स्टोरेज में कोई अंतर नहीं है.

recency

recency फ़ील्ड, इस डिवाइस के इस इंटरेस्ट ग्रुप में शामिल होने से लेकर, अब तक की समयावधि (मिनट में) का है

bidCount

वह संख्या जितनी बार इंटरेस्ट ग्रुप ने बिड सबमिट की है.

prevWinsMs

prevWinMs फ़ील्ड में इंटरेस्ट ग्रुप के विजेता विज्ञापन और उनके पिछली जीत के बाद से मिलीसेकंड में होने वाले समय की जानकारी होती है. ध्यान दें कि यहां मौजूद विज्ञापन ऑब्जेक्ट में सिर्फ़ renderURL और मेटाडेटा फ़ील्ड शामिल हैं.

wasmHelper

एक WebAssembly.Module ऑब्जेक्ट, जिसे इंटरेस्ट ग्रुप के biddingWasmHelperURL पर आधारित है.

dataVersion

खरीदार के कुंजी/वैल्यू सेवा के जवाबों से मिली डेटा-वर्शन वैल्यू.

adComponentsLimit

विज्ञापन कॉम्पोनेंट की ज़्यादा से ज़्यादा संख्या generateBid() दिख सकती है

बोली की गणना करें

बिड की वैल्यू कैलकुलेट करने के लिए, generateBid() में मौजूद कोड, फ़ंक्शन के पैरामीटर की प्रॉपर्टी का इस्तेमाल कर सकता है.

उदाहरण के लिए:

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
   //  ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    // ...
  }
}

बिड दिखाएं

generateBid() इन प्रॉपर्टी वाला कोई ऑब्जेक्ट दिखाता है:

प्रॉपर्टी भूमिका
ad विज्ञापन के बारे में आर्बिट्ररी मेटाडेटा, जैसे कि वह जानकारी जो सेलर इस बिड या विज्ञापन क्रिएटिव के बारे में जानने की उम्मीद करता है. सेलर इस जानकारी का इस्तेमाल, नीलामी और फ़ैसले के आधार पर करता है.
adCost यह एक न्यूमेरिक वैल्यू होती है. इसका इस्तेमाल, विज्ञापन देने वाले व्यक्ति या कंपनी के क्लिक या कन्वर्ज़न लागत की रिपोर्टिंग को, generateBid से reportWin में पास करने के लिए किया जाता है. यह संख्या 8-बिट मैनटिसा और 8-बिट घातांक तक सीमित होती है, जिसमें सभी राउंडिंग स्टोकास्टिक तरीके से की जाती हैं.
adComponents कई हिस्सों से बने विज्ञापनों के लिए, ज़्यादा से ज़्यादा 20 कॉम्पोनेंट की एक वैकल्पिक सूची, जिसे इंटरेस्ट ग्रुप के लिए पास किए गए तर्क की adComponents प्रॉपर्टी से लिया जाता है, जिसे navigator.joinAdInterestGroup() को पास किया जाता है.
allowComponentAuction एक बूलियन वैल्यू, जिससे पता चलता है कि इस बिड का इस्तेमाल कॉम्पोनेंट नीलामी में किया जा सकता है या नहीं. डिफ़ॉल्ट तौर पर, यह "गलत" पर सेट होती है अगर बताया नहीं गया है.
bid संख्या वाली वह बोली जो नीलामी में शामिल होगी. विक्रेता अलग-अलग खरीदारों की बोलियों की तुलना करने की स्थिति में होना चाहिए, इसलिए बोलियां कुछ विक्रेता की चुनी हुई इकाई (जैसे कि "डॉलर प्रति हज़ार") में होनी चाहिए. अगर बोली शून्य या नेगेटिव है, तो इंटरेस्ट ग्रुप के आधार पर चुना गया यह ग्रुप, सेलर की नीलामी में हिस्सा नहीं लेगा. इस प्रणाली के साथ, खरीदार के लिए कोई भी विज्ञापनदाता नियम लागू कर सकता है कि उसके विज्ञापन कहां प्रदर्शित हो सकते हैं या नहीं.
bidCurrency currency-checking के लिए इस्तेमाल की जाने वाली बोली की मुद्रा.
render क्रिएटिव की जानकारी देने वाला शब्दकोश, जो इस बोली के नीलामी जीत जाने पर रेंडर किया जाना चाहिए. इसमें इस तरह का कॉन्टेंट शामिल है:
  • url: क्रिएटिव का यूआरएल.
  • width: क्रिएटिव की चौड़ाई. इस साइज़ को इंटरेस्ट ग्रुप में दी गई जानकारी से मैच किया जाएगा और इसे विज्ञापन क्रिएटिव के यूआरएल में मौजूद विज्ञापन साइज़ के मैक्रो में बदल दिया जाएगा. जब विज्ञापन को किसी फ़ेंस किए गए फ़्रेम में लोड किया जाता है, तो फ़ेंस किए गए फ़्रेम का इनर फ़्रेम (यानी विज्ञापन क्रिएटिव को दिखने वाला साइज़) इस साइज़ में फ़्रीज़ हो जाएगा. साथ ही, एम्बेडर से बनाए गए फ़्रेम साइज़ में कोई बदलाव नहीं देख पाएगा.
  • height: क्रिएटिव की ऊंचाई. विस्तार से width में देखें.

modelingSignals

reportWin() को 0-4095 पूर्णांक (12-बिट) भेजा गया, लेकिन उसमें नॉइज़ नहीं किया गया. इसकी जानकारी नॉइज़िंग और बकेटिंग स्कीम में दी गई है. नेगेटिव, इनफ़ाइनाइट, और NaN वैल्यू जैसी अमान्य वैल्यू को अनदेखा कर दिया जाएगा और इन्हें पास नहीं किया जाएगा. सिर्फ़ सबसे कम 12 बिट पास किए जाएंगे.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
खरीदार, generateBid() फ़ंक्शन में उपलब्ध सिग्नल का इस्तेमाल कर सकता है. इसमें पहले पक्ष (ग्राहक) का डेटा शामिल है, जिसे userBiddingSignals में इंटरेस्ट ग्रुप बनाते समय कैप्चर किया गया था. इससे, एमएल मॉडल की ट्रेनिंग चालू करने के लिए, खरीदार के जीतने की रिपोर्टिंग फ़ंक्शन को भेजी जाने वाली वैल्यू हासिल की जा सकती है.