게재빈도별 광고 소재 선택

공유 스토리지 워크릿을 실행하여 URL을 선택하고 이를 격리된 프레임에 렌더링합니다.

Shared Storage API는 다양한 사용 사례를 지원하는 범용 크로스 사이트 스토리지를 위한 개인 정보 보호 샌드박스 제안입니다. 한 가지 예로 Chrome 베타 104.0.5086.0 이상에서 테스트할 수 있는 빈도 제어가 있습니다.

저장된 데이터를 기반으로 제공된 목록에서 URL을 선택하는 워크릿 스크립트를 실행한 다음 펜스 처리된 프레임에서 해당 URL을 렌더링합니다. 이 값을 사용하여 빈도 제한에 도달했을 때 새 광고 또는 기타 콘텐츠를 선택할 수 있습니다.

빈도별 광고 소재 선택 테스트

공유 스토리지 및 차단된 프레임으로 빈도별 광고 소재 선택을 테스트하려면 Chrome 104.0.5086.0 이상을 사용하고 있는지 확인하세요. chrome://settings/adPrivacy에서 모든 광고 개인 정보 보호 API를 사용 설정합니다.

명령줄에서 --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames 플래그를 사용하여 공유 스토리지를 사용 설정할 수도 있습니다.

코드 샘플 실험

불투명 URL을 선택하고 만들려면 공유 스토리지 데이터를 읽도록 워크릿 모듈을 등록하세요. 작업 단위 클래스는 최대 8개의 URL 목록을 수신한 후 선택한 URL의 색인을 반환합니다.

클라이언트가 sharedStorage.selectURL()를 호출하면 워크릿이 실행되고 격리된 프레임에 렌더링될 불투명 URL을 반환합니다.

사용자가 이전에 본 횟수에 따라 렌더링할 다른 광고 또는 콘텐츠를 선택한다고 가정해 보겠습니다. 사용자가 콘텐츠를 본 횟수를 집계하고 이 값을 공유 스토리지에 저장할 수 있습니다. 저장되면 공용 저장소의 값을 여러 출처에서 사용할 수 있습니다.

그런 다음 공유 스토리지 워크릿이 공유 스토리지의 값을 읽고 추가 조회마다 카운터를 증가시킵니다. 개수가 사전 정의된 한도에 도달하지 않은 경우 렌더링하려는 콘텐츠가 반환됩니다 (색인 1). 그렇지 않으면 기본 URL이 반환됩니다 (색인 0).

예를 들면 다음과 같습니다.

  • creative-selection-by-frequencyjs는 콘텐츠 제작자 또는 광고주의 iframe을 통해 로드되며 공유 스토리지 워크릿을 로드하고 반환된 불투명 소스를 차단된 프레임에 렌더링하는 역할을 합니다.
  • creative-selection-by-frequency-worklet.js는 빈도 수를 읽어 콘텐츠 또는 광고 소재에 대해 반환되는 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 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 sharedStorage.set('frequency-count', count + 1);
    return 1;
  }
}

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

사용 사례

Select URL API의 사용 가능한 모든 사용 사례는 이 섹션에서 확인할 수 있습니다. Google은 의견을 받고 새로운 테스트 사례를 발견할 때마다 예시를 계속 추가할 예정입니다.

  • 광고 소재 순환: 광고 소재 ID 및 사용자 상호작용과 같은 데이터를 저장하여 사용자가 여러 사이트에서 어떤 광고 소재를 보게 될지 결정합니다.
  • 게재빈도별 광고 소재 선택: 조회수 데이터를 사용하여 사용자가 여러 사이트에서 보는 광고 소재를 결정합니다.
  • A/B 테스트 실행: 사용자를 실험 그룹에 할당한 후 해당 그룹을 Shared Storage에 저장하여 교차 사이트에서 액세스할 수 있습니다.
  • 알려진 고객을 위한 환경 맞춤설정: 사용자의 등록 상태 또는 기타 사용자 상태를 기반으로 맞춤 콘텐츠와 클릭 유도 문구를 공유합니다.

참여 및 의견 공유

Select URL API 제안은 현재 활발히 논의되고 개발 중이며 변경될 가능성이 있습니다.

Select URL API에 대한 의견을 기다리고 있습니다.