AdSense와 페이지뷰 관련 문제

아직 이 문제에 대해 더 많은 진전이 없었던 점 죄송합니다. 담당자들이 확인 중이지만, 불행히도 공유할 업데이트가 없습니다. :frowning:

여러분 입장에서는 진행 속도가 느리다고 느껴질 수 있지만, 우리는 모든 Discourse 사이트를 소중하게 생각하고 있습니다. :discourse: 마법봉을 휘둘러서 모든 것을 바로잡을 수 있다면 당연히 그렇게 할 것입니다.

그럼에도 이사를 잘 마무리하시길 바라며, 떠나시는 점이 안타깝습니다.

3개의 좋아요

도와주셔서 감사합니다, @JammyDodger. 아무도 신경 쓰지 않는다는 느낌을 받은 이유는, 불행히도 이 스레드와 이 이슈의 이전 버전들이 텅 비어 있기 때문입니다. 마법 지팡이를 바라는 것은 아니지만, 2개월이 지났는데도 아무도 이 문제를 조사하고 있다는 신호가 거의 보이지 않아 1월 전에 반드시 시스템을 정상 가동해야 하는 저로서는 큰 걱정입니다.

지난 몇 달간 대형 광고 대행사 두 곳과 협의를 진행했는데, Discourse를 사용 중이라는 것을 알고 들은 순간 협의를 중단했습니다. AdButler를 셀프서브 광고 시스템과 연동해 보았는데, AdButler에서는 상당한 노출 수를 집계했지만 셀프서브 광고 시스템에서는 페이지뷰/광고 요청의 아주 일부만 기록되었습니다.

현재는 이전에 Discourse와 협력 경험이 있다고 주장한 광고 공급업체를 사용 중입니다. 하지만 해당 개발자와 통화했을 때, 실제로는 Discourse를 사용해 본 적이 없고 이전에 SPA에서는 성공적인 경험이 있었다고 하더군요. 현재 광고는 운영 중이며 노출 수는 괜찮은 수준이지만, 여전히 기대치에 크게 못 미치고 있어 안타깝습니다.

Discourse를 7년째 사용하다 이렇게 말씀드리게 되어 죄송합니다. 이 문제를 해결하기 위해 날마다 시간을 낭비했지만 아무런 진전이 없었기 때문입니다.

2개의 좋아요

Shane님,

말씀하신 내용을 잘 들었습니다. 해당 문제를 우선적으로 처리하고 있습니다. Discourse 로그와 Google 로그에 대한 전체적인 접근 권한이 필요하기 때문에 해결이 매우 까다롭습니다.

@MarkDoerr 님이 해당 기능이 설정된 고객사 중 한 곳과 관계를 맺고 접근 권한을 확보했으며, 현재 어떤 방향으로 진행될 수 있는지 조사 중입니다. 해결에 수 주에서 수개월이 걸릴 수 있습니다.

다양한 조사 결과가 나오면 이 곳에 반드시 업데이트하겠습니다. Discourse 플랫폼에서 광고가 잘 작동하도록 만들고 싶지만, 정확히 어떤 부분을 개선해야 하는지 알아야 합니다.

4개의 좋아요

이 문제가 해결되기를 오래전부터 기다려 왔습니다. 공사가 끝나기를 손꼽아 기다리고 있어요. 조금이라도 진전이 있기를 바랍니다. 문제가 해결된다면 정말 감사하겠습니다. @sam

현재 상황은… 저희의 한 로컬 고객에서 테스트를 해보았으나, 재현이 전혀 되지 않습니다. 다른 고객을 찾고 있습니다.

여기서 디버깅을 해본 결과, 이 플러그인에서 “topic” → “topic” 전환이 사실상 깨져 있다는 점이 명백한 문제입니다.

  1. 주제 X를 방문합니다.
  2. 추천, 링크 등 … 주제 Y로 가는 링크를 클릭합니다.
  3. 광고가 변경되지 않으며, AdSense에 새로운 페이지뷰가 기록되지 않는 것으로 보입니다.

대신 다른 주제로 이동할 때 광고를 새로고침하여 AdSense 페이지뷰가 트리거되도록 해야 합니다.

향후 몇 주 내에 이 문제를 수정하는 방법을 살펴볼 예정입니다.

5개의 좋아요

이 수정 사항을 병합했습니다. 이로 인해 유사한 페이지 간의 전환(예: topic → topic 또는 topic-list → topic-list) 시 페이지의 광고 단위가 이제 올바르게 다시 로드됩니다. 이로 인해 인프레션(impressions)이 약간 증가할 것입니다. 정확한 수치는 사용 패턴에 따라 달라집니다.

Google에서 AdSense의 페이지뷰(pageview) 메트릭을 어떻게 계산하는지에 대한 정보를 찾을 수 없습니다.

Discourse는 단일 페이지 애플리케이션(SPA)이므로 포럼 내 탐색은 ‘실제’ 페이지뷰가 아닙니다. Google Analytics와 Discourse 자체의 메트릭은 이 점을 인지하고 가짜 페이지뷰를 추적합니다.

AdSense가 ‘실제’ 페이지뷰만 집계할 수 있습니다. 그렇다면 GA/Discourse 수치와 비교했을 때 숫자가 낮은 이유를 설명할 수 있습니다.

9개의 좋아요

Google의 도움 없이 여기서 진전을 이루기는 매우 어렵습니다.

@david 님이 오늘 버그 2건을 수정했는데, 이로 인해 상황이 조금은 나아질 수 있습니다. 하지만 근본적으로 AdSense에서 제공하는 API는 우리의 손을 상당히 묶어 놓은 상태입니다.

구현 방식은 다음과 같습니다:

  1. 광고를 표시하고자 하는 위치에 이러한 <ins 요소를 배치합니다:
    {{#if showAd}}
    <div class="google-adsense-label"><h2>{{i18n
          "adplugin.advertisement_label"
        }}</h2></div>
    <div
      class="google-adsense-content"
      id={{if isResponsive "google-adsense__responsive"}}
      style={{adWrapperStyle}}
    >
      <ins
        class="adsbygoogle"
        style={{adInsStyle}}
        data-ad-client="ca-pub-{{publisher_id}}"
        data-ad-slot={{ad_code}}
        data-ad-format={{autoAdFormat}}
      >
      </ins>
    </div>
  {{/if}}
  1. AdSense가 광고를 채울 준비가 되었을 때 window.adsbygoogle.push({})를 호출합니다.

여기서 우리가 가질 수 있는 제어력은 거의 이 정도입니다.

관찰한 내용은 다음과 같습니다:

  1. push 호출 이후 Google은 동일한 광고를 반복적으로 표시하는 경향이 있습니다. 다음 push 호출(그리고 다음 <ins 요소) 전에 다른 광고를 받으려면 iframe이 로드되도록 "5초간 대기하는 호출"이 필요한 것처럼 보입니다.

  2. 긴 주제 내역을 스크롤하다 보면 … 결국 광고가 깨집니다. 광고가 깨진 시점부터는 페이지를 새로고침할 때까지 더 이상 광고가 표시되지 않으며, 오류는 우리에게 노출되지 않습니다. 예외를 잡을 때 난독화된 코드에서 이를 확인할 수 있습니다:

  1. 정상적인 상황에서 페이지 URL이 Google에 보고되는 것을 확인할 수 있습니다:

replaceState를 수행한 경우, 스크롤하는 동안에도 이 값이 업데이트됩니다:

Google이 우리를 도와줄 수 있는 부분은?

  1. 이 예외가 무엇인지, 그리고 AdSense가 왜 100% 깨진 모드로 전환되는지 디버깅을 돕기 위한 미미니파이드(minified)되지 않은 AdSense 코드

  2. 라우트 전환 시 호출할 수 있는 .reset() API. JavaScript는 언로드할 수 없으며, AdSense의 내부 상태를 초기화할 방법이 없습니다.

  3. PWA 사용에 대한 더 나은 공개 가이드라인과 더 풍부한 API

Google 측에 몇몇 연락처가 있어, 이 내용을 전달하여 도움을 받을 수 있는지 알아보겠습니다.

David의 수정 사항 이후 상황은 조금 나아질 것으로 보이지만, 벽에 부딪힌 것 같습니다.

결국 깨지는 현상을 실시간으로 재현해 볼 수 있는 링크는 다음과 같습니다: https://forum.freecodecamp.org/t/welcome-to-freecodecamps-forum/92385 아래로 계속 스크롤해 보세요…

12개의 좋아요

여러분, 안녕하세요.

진전이 있는 것 같아 다행입니다. 다만 구글이 협조하지 않을 것 같다는 느낌이 드네요.

추가로, 제 새 사이트에서 Discourse가 GA4에서도 페이지뷰를 상당히 과대 집계하는 것 같습니다. 정확히 파악하기는 어렵습니다. 주중은 제 사이트에서 방문이 적은 시기이고, 제 니치 분야에서는 시즌이 거의 끝나가는 때이기 때문입니다. 하지만 그렇더라도 페이지뷰가 20~40% 정도 부풀려진 것으로 보입니다. 이는 전통적인 설정 방식(기본적으로 동일한 방식으로 작동함)과 비교했을 때의 결과입니다.

물론 일부 차이는 사이트 이전 등의 요인 때문일 수 있지만, 누군가 문제를 해결하는 데 도움이 될 단서가 될 수 있기를 바라며 여기에 공유합니다.

2개의 좋아요

정확성을 위해 말씀드리면, Discourse가 페이지 뷰를 집계할 때 추정 과정은 전혀 없습니다. 우리는 서버 측 활동을 기반으로 집계하며, GA(Google Analytics)는 사용자가 스스로 보고하는 내용에 기반하여 집계합니다.

1개의 좋아요

정리하자면, Discourse의 PageViews와 GA4의 페이지 뷰 사이의 차이를 말하는 것이 아닙니다.

GA4가 Discourse에서 실행될 때, 동일한 수의 사용자를 가진 더 전통적인 포럼 환경에서 GA4를 실행하는 경우보다 페이지 뷰 수가 과대 계산되는 것 같습니다.

Discourse에서 실행되는 GA4는 많은数量的 '유령 페이지 뷰(phantom pageviews)'를 감지하고 있는 것 같습니다. 최근 전환을 완료했는데, 이제 GA4에서 Discourse가 페이지 뷰로 집계했던 수준에 훨씬 가까운 수치를 얻고 있지만, 실제로는 크롤러 총계는 제외된 상태입니다.

이것은 아마도 Google 측의 문제일 수 있습니다.

11월 7일에 전환을 완료했습니다.

페이지 뷰는 즉시 급감했지만, 사용자 참여도(user engagement)는 상승했습니다.

하지만 여전히 사용자 수는 대략적으로 동일합니다.

시스템 전환 등으로 인해 일시적인 변동이 있을 수 있고, 시즌이 끝나가면서 사이트의 활동이 다소 줄 것으로 예상하지만, PageViews의 급감은 과도해 보입니다. 우리는 가능한 한 URL 구조를 유지하여 혼란을 최소화했습니다.

사실 지난 해의 Google Analytics 데이터를 다시 살펴보니, Discourse에서 Universal Analytics를 사용할 때 화요일 이후의 트래픽과 훨씬 더 잘 일치했습니다. 그래서 실제로는 GA4에 문제가 있으며, Discourse에서 확인하는 페이지뷰 데이터에 오류가 있는 것 같습니다.

… 그리고 혼란스럽게도 Google AdSense도 그 중 일부만 보고 있습니다.

Shane, 이 주제가 여러 방향으로 흐르는 것 같아서 몇 가지 내용을 정리해 보겠습니다:

  1. AdSense의 페이지뷰 수치는 무시해야 합니다. Google에 따르면 AdSense는 SPA(싱글 페이지 애플리케이션)와 호환성이 좋지 않으며, 방문당 페이지뷰를 1회만 집계합니다.
  2. AdSense에서 재현 가능한 버그가 있습니다. 특정 양의 스크롤링 이후 AdSense가 완전히 작동하지 않는 현상이며, Google과 함께 우회책을 찾기 위해 노력하고 있습니다.
  3. GA4의 페이지뷰와 Discourse의 페이지뷰를 일치시키도록 시도하고 있습니다. 다음 경우에 페이지뷰가 집계됩니다.
    1. 사이트를 처음 방문할 때
    2. SPA 내에서 라우트를 변경할 때 … 즉, 한 주제에서 다른 주제로 이동할 때입니다.
    3. 광고 차단 프로그램 등은 모든 정렬 작업을 무효화합니다. GA4는 브라우저가 Google을 호출하는 방식으로 관리되는 반면, 우리의 카운팅은 서버 측에서 이루어지기 때문입니다.

전통적인 비(SPA) 포럼에서는 주제당 여러 페이지뷰를 집계합니다. 각 페이지마다 1회씩 집계되죠. 우리는 스크롤링을 얼마나 많이 하든 주제당 1회만 집계합니다. 이 방식을 다시 생각해 봐야 할지 모르겠습니다… 확신은 없습니다…

5개의 좋아요

화면에 n+15번째 주제가 표시되고 n+10번째 게시글이 표시될 때, 페이지 뷰를 위해 "다음 페이지"를 모방하는 메커니즘이 있나요?

기본적으로 제공되지는 않지만, 테마 컴포넌트에서 이를 구현할 수 있을 것으로 생각합니다. 그렇게 하면 Discourse 페이지 뷰가 어느 정도 정렬되지 않게 됩니다.

1개의 좋아요

게시물이 새 주제로 분리되었습니다: GA4 페이지 뷰가 Discourse 페이지 뷰보다 부풀려져 있습니다

안녕하세요. 제게 이 문제는 아직 완전히 해결되지 않았고, 여전히 계속되고 있습니다. 특히 2024년부터 AdSense가 완전히 다른 광고 수익 체계로 전환되고 있습니다. 이제 AdSense는 노출(impressions)에 따라 비용을 지급할 예정입니다. 이 경우 Discourse를 사용하는 사이트에는 부정적인 영향을 미칠 것입니다. 앞으로 며칠 안에 이 상황을 살펴봐 주시면 감사하겠습니다.

구글 측의 답변은 다음과 같습니다:

  1. AdSense는 SPA에서 100% 정상적으로 작동하지 않으며, SPA를 위해 설계되지 않았습니다.
  2. 구글에서 제공되는 대안은 없습니다.
  3. AdSense를 사용하는 SPA에서는 페이지 뷰 수치를 신뢰할 수 없습니다.

더 좋은 소식을 전해드리지 못해 죄송합니다. 하지만 여기서는 우리가 할 수 있는 일이 전혀 없습니다.

5개의 좋아요

제 경험에 비추어 보면 Google Analytics도 마찬가지입니다.

저는 이 의견에 동의하지 않습니다. 우리의 구현 방식은 Google Analytics와 호환됩니다.

분명히… Google Analytics는 대량의 페이지 뷰를 카운트하지 않습니다.

  • 크롤러/API 호출은 JavaScript를 실행하지 않는 한 아무것도 카운트되지 않습니다.
  • 우리의 구현 방식은 매우 보수적입니다. 게시글이 얼마나 길든 주제당 1개의 페이지 뷰만 카운트합니다.
  • Brave와 같은 브라우저는 이러한 트래픽을 차단할 수 있으며, 다양한 플러그인 브라우저도 마찬가지입니다.

주의사항을 제외하면, 이 방식은 광고된 대로 작동합니다.


정확한 카운트가 정말 필요하다면, NGINX 로그가 훨씬 더 정확한 수치를 제공합니다.