광고 소재 순환게재

공유 저장소를 사용하여 사이트 전체에서 사용자에게 표시되는 광고 소재를 결정합니다.

Shared Storage API는 개인 정보 보호 다양한 용도를 지원하는 크로스 사이트 스토리지를 위한 범용 샌드박스 제안 사용 사례일 수 있습니다. 이러한 예로는 광고 소재 순환게재를 들 수 있는데, Chrome 104.0.5086.0 이상에서 테스트할 수 있습니다.

광고 소재 순환게재를 통해 광고 소재 ID, 보기 권한 등의 데이터를 광고 소재 사용자의 전체 보기 확인할 수 있습니다.

공유 저장소 Worklet을 실행하여 제공된 목록에서 해당 광고 소재를 분리 프레임에 렌더링할 수 있습니다. 이는 새 광고나 다른 콘텐츠를 선택할 수 있습니다

광고 소재 순환게재 사용해 보기

공유 스토리지를 사용하여 광고 소재 순환게재를 실험하려면 Chrome 104.0.5086.0 이상을 사용하고 있는지 확인하세요. chrome://settings/adPrivacy에서 모든 광고 개인 정보 보호 API를 사용 설정합니다.

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

코드 샘플 실험

광고주나 콘텐츠 제작자는 각 콘텐츠별로 서로 다른 전략을 콘텐츠 또는 광고 소재를 순환게재하여 효과를 높일 수 있습니다. 공유 스토리지는 다음과 같은 다양한 회전 전략을 실행하는 데 사용할 수 있습니다. 서로 다른 사이트에 순차 순환게재와 균등 분산 순환게재를 지원합니다.

이 예에서는 다음과 같이 정의됩니다.

  • creative-rotation.js는 프레임에 삽입됩니다. 이 스크립트는 가장 중요한 광고 ( 가중치)와 워크렛을 호출하여 어떤 콘텐츠를 표시해야 하는지 결정합니다.
  • creative-rotation-worklet.js는 표시해야 하는 콘텐츠 및 반환의 가중치 분포를 결정하는 공유 저장소 Worklet입니다.

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 선택입니다.

  • 광고 소재 순환게재: 광고 소재 ID, 조회수, 사용자 상호작용과 같은 데이터를 저장하여 확인할 수 있습니다.
  • A/B 테스트: 한 사용자를 실험 그룹에 할당한 다음 해당 그룹을 공유 스토리지에 저장하여 크로스 사이트에서 액세스할 수 있습니다.
  • 맞춤 사용자 환경: 사용자의 등록 상태 또는 기타 사용자 상태를 기반으로 한 맞춤 콘텐츠와 클릭 유도 문구를 공유합니다.

요약 보고서 생성

공유 스토리지를 사용하여 정보를 수집하고 불필요한 집계 요약 보고서를 생성했습니다. 이러한 사용 사례의 출력 게이트는 Private Aggregation API.

  • 순 사용자 도달범위 측정: 많은 콘텐츠 제작자와 광고주는 자신의 고유한 콘텐츠가 시청자들이 콘텐츠를 조회했습니다. 공유 저장공간을 사용하여 사용자의 최초 기록 기록 광고, 삽입된 동영상, 간행물을 보고 중복을 방지하기 위해 집계할 수도 있습니다. 그런 다음 Private Aggregation API를 사용하여 도달범위에 대한 요약 보고서를 출력할 수 있습니다.
  • 인구통계 측정: 콘텐츠 제작자는 콘텐츠 제작자의 인구통계를 파악하려는 경우가 많습니다. 잠재고객입니다. 공유 스토리지를 사용하여 사이트의 상황(예: 퍼스트 파티 사이트)에서 집계된 데이터를 사용하여 삽입된 콘텐츠와 같은 다른 여러 사이트에서 이에 대해 보고할 수 있습니다.
  • K+ 게재빈도 측정: '유효 주파수'로 설명되기도 합니다. 일반적으로 최소 개수의 사용자가 특정 콘텐츠를 인식하거나 회상하기 전에 조회가 발생할 수 있습니다 (주로 (광고 조회 문맥) 공유 저장소를 사용하여 보고서를 작성할 수 있습니다. 콘텐츠를 K회 이상 본 순 사용자의 비율을 나타냅니다.

참여 및 의견 공유

공유 저장용량 제안은 현재 논의 중이며 변경될 수 있습니다. 있습니다. 이 API를 사용해 보고 의견이 있으면 언제든지 알려 주세요.