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

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

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

आप 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.मॉड्यूल ऑब्जेक्ट, जो इंटरेस्ट ग्रुप के biddingWasmHelperURL पर आधारित है.

dataVersion

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

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 यह संख्यात्मक वैल्यू है, जिसका इस्तेमाल रिपोर्टिंग में विज्ञापन देने वाले के क्लिक या कन्वर्ज़न की लागत को Genबिड से reportWin तक भेजने के लिए किया जाता है. यह संख्या 8-बिट मैंटिसा और 8-बिट एक्सपोनेंट तक सीमित होती है, जिसमें कोई भी राउंडिंग स्टॉकेस्टिक तरीके से की जाती है.
adComponents कई हिस्सों से बने विज्ञापनों के लिए, ज़्यादा से ज़्यादा 20 कॉम्पोनेंट की वैकल्पिक सूची, जिसे navigator.joinAdInterestGroup() को पास किए गए इंटरेस्ट ग्रुप तर्क की adComponents प्रॉपर्टी से लिया जाता है.
allowComponentAuction एक बूलियन वैल्यू, जिससे पता चलता है कि इस बिड का इस्तेमाल किसी कॉम्पोनेंट नीलामी में किया जा सकता है या नहीं. अगर इसके बारे में नहीं बताया गया है, तो डिफ़ॉल्ट तौर पर "गलत" पर सेट होता है.
bid नीलामी में शामिल होने वाली संख्यात्मक बोली. विक्रेता इस स्थिति में होना चाहिए कि अलग-अलग खरीदारों की बिड की तुलना कर सके, इसलिए बिड, विक्रेता की चुनी हुई इकाई (जैसे कि"हर हज़ार डॉलर") में होनी चाहिए. अगर बोली शून्य या नेगेटिव है, तो यह इंटरेस्ट ग्रुप, सेलर की नीलामी में हिस्सा नहीं लेगा. इस तरीके से खरीदार, विज्ञापन देने वाले के किसी भी नियम को इस बात के लिए लागू कर सकता है कि उसके विज्ञापन कहां दिखें या नहीं.
bidCurrency बोली की मुद्रा, जिसका इस्तेमाल मुद्रा की जांच के लिए किया जाता है.
render क्रिएटिव की जानकारी देने वाली डिक्शनरी, अगर यह बिड नीलामी में जीत जाती है, तो किस क्रिएटिव को रेंडर किया जाना चाहिए. इसमें इस तरह का कॉन्टेंट शामिल है:
  • url: क्रिएटिव का यूआरएल.
  • width: क्रिएटिव की चौड़ाई. इस साइज़ का मिलान इंटरेस्ट ग्रुप में दी गई जानकारी के हिसाब से किया जाएगा. साथ ही, इसे विज्ञापन क्रिएटिव यूआरएल में मौजूद विज्ञापन साइज़ के किसी भी साइज़ के मैक्रो में बदल दिया जाएगा. जब विज्ञापन को फ़ेंस किए गए फ़्रेम में लोड किया जाता है, तो फ़ेंस किए गए फ़्रेम का इनर फ़्रेम (यानी कि विज्ञापन क्रिएटिव को दिखने वाला साइज़) इस साइज़ तक फ़्रीज़ हो जाएगा. साथ ही, इसे एम्बेडर के फ़्रेम साइज़ में किए गए बदलाव नहीं दिखेंगे.
  • height: क्रिएटिव की ऊंचाई. width में ज़्यादा जानकारी देखें.

modelingSignals

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


एमएल मॉडल ट्रेनिंग चालू करने के लिए, खरीदार, generateBid() फ़ंक्शन में उपलब्ध सिग्नल का इस्तेमाल कर सकता है. इसमें दिलचस्पी का ग्रुप बनाते समय, userBiddingSignals में दिलचस्पी का ग्रुप बनाते समय, पहले पक्ष के खरीदार के कैप्चर किए गए डेटा का डेटा भी शामिल है.