광고는 등록 사용자만 볼 수 있나요?

게스트가 아닌 등록한 사용자에게만 광고를 표시하는 방법이 있을까요?

또는 세션 상태에 따라 커스텀 스크립트 태그를 사용하는 것도 가능할까요?

여기서 논리는 다음과 같습니다. 가입 또는 SSO 과정에서 이용약관/개인정보 처리방침에 동의한 사용자는 다른 곳에서의 쿠키/광고 사용에도 동의한 상태인 반면, 게스트는 그렇지 않다는 것입니다.

이 필요성의 범위는 제한적이라고 생각합니다(주로 EEA 국가), 하지만 방문자의 위치에 관계없이 이 기능을 구현할 수 있다면 더 좋겠습니다.

이 기능을 구현하기 위해 코드에서 어디를 살펴봐야 하는지에 대한 팁도 환영합니다.

CSS로 숨길 수는 있지만, 쿠키는 여전히 전송되고 정보가 수집됩니다. 수정: 이 조언은 잘못된 것입니다.

아래 링크가 필요할 수도 있습니다: Discourse Cookie Consent Banner

사실, CSS로 광고를 숨기는 것은 쿠키나 수집되는 데이터에 대해 아무런 영향을 미치지 않습니다.

이것은 유료 제품인 제3자 서비스에 의존합니다. 그리고 소스 코드를 살펴보면, 배너를 표시하는 것만 할 뿐, Discourse의 광고 플러그인에 의해 트리거되는 쿠키를 차단하는 기능은 없는 것 같습니다.

어쨌든, 해당 배너는 쿠키 사용에 대한 동의만을 처리합니다 — 이는 타겟팅 광고와 같은 개인 정보 수집에 필요한, 더 엄격한 GDPR 수준의 동의를 위해선 충분하지 않습니다. 이러한 동의는 광고가 로드되기 전에 이루어져야 합니다.

우리는 이미 다른 곳(SSO)에서 해당 동의를 수집하고 있으므로, 로그인한 사용자에게만 광고를 표시하는 옵션을 제공하는 것이 이를 처리하는 한 가지 방법이 될 수 있지만, 이것이 우리의 설정에 특화된 것일 수도 있다고 생각합니다.

참고로, 저희 사이트에서는 사용자 ID를 확인하여 게스트 사용자만 광고를 제공합니다. 저희 “디스코urs가 아닌” 포럼에서는 모든 게스트(로그인 안 함) 사용자의 사용자 ID가 1보다 작기 때문에, 회원에게는 광고를 제공하지 않고(등록된 사용자만 광고를 제공하는 것과 정반대) 쉽게 확인할 수 있습니다.

아직 공식 디스코urs 광고 플러그인을 살펴본 적이 없어서, 이것이 설정 옵션인지 아니면 간단한 코드 수정으로 가능한지 확인해 보지 못했습니다.

“광고 서빙”이라고 하셨을 때, Doubleclick/공개 광고 네트워크를 말씀하시는 건가요, 아니면 하우스 애드(house ads)를 말씀하시는 건가요?

공개 광고 네트워크가 페이지에서 서빙되는 광고를 볼 수 없는 경우(게스트에게는 숨겨져 있기 때문에) 계정이 정지될 위험이 있습니다. 검증 없이 노출되는 인프레션(impressions)은 일반적으로 악용(어뷰징)으로 간주되며, 뷰포트 밖에서 광고를 렌더링하거나 이와 유사한 부정한 행위를 하고 있다고 추정하기 때문입니다.

우리는 '광고를 제공하지 않는다’고 말할 때, 정말로 광고를 제공하지 않는다는 뜻입니다. 우리 경우를 들어 보면, 우리는 자체 광고 서버를 소유하고 운영하며, 이 서버는 우리가 지정한 방식(자체 광고, 테크 네트워크, 특별 캠페인, 구글 광고 태그, 수많은 광고 네트워크 등)으로 태그를 실행합니다. 광고를 어떻게 제공할지는 전적으로 '우리’와 우리 광고 고객들의 몫입니다. 안녕.

광고를 제공하지 않는다는 것은 광고를 숨기는 것이 아닙니다. 그것은 단순히 광고를 제공하지 않는다는 뜻입니다.

우리는 ‘중국에 자체 광고 제공’… ‘회원에게는 광고 제공 안 함’… ‘미국에는 테크 네트워크 광고만 제공’… ‘브라질에는 그린 광고 제공’… ‘영국에는 광고 제공 안 함’… ‘FF 브라우저에는 퍼플 광고 제공’… ‘크롬에는 핑크 광고 제공’… 등을 쉽게 설정할 수 있습니다. 이는 모두 아주 기본적인 광고 제공 101에 해당합니다.

우리는 15년 이상 광고를 관리하고 제공해 왔으며, 어떤 위험도 없습니다.

우리는 우리가 무엇을 하고 있는지 잘 알고 있으며, 이 업계에 아주, 아주 오래전부터 종사해 왔습니다.

다른 사람들에 대해서는, CSS와 '광고 숨기기’에 대한 모든 논의는 웹사이트를 운영하거나 이 주제를 논하는 올바른 방식이 아닙니다. 사용자에게 광고를 제공하는 것은 수많은 기준(지역, 사용자 상태, 시간대, 브라우저 및 사용자 성별까지 타겟팅 가능)에 기반합니다. 자체 광고 서버를 운영한다면 이는 모두 기본적인 광고 서버 101입니다.

지난해 우리는 자체 광고부터 커스텀 직접 벤더 구매까지 약 5억 건의 광고를 제공했을 것입니다(트래픽이 감소한 구식 포럼 특성상 그보다 적을 수도 있습니다).

디스코urs의 광고 플러그인이 어떻게 작동하는지는 모르지만, 광고 제공 관점에서는 등록된 사용자를 타겟팅하고 게스트에게는 타겟팅(또는 제공)하지 않는 것에 아무런 문제가 없습니다. 이것이 바로 광고 제공의 방식입니다. 타겟팅이죠.

우리 경우를 들어 보면, 우리는 광고 서버를 운영하며 수많은 기준에 기반하여 타겟팅합니다. 이는 모두 아주 기본적인 광고 서버 101에 해당합니다. 우리 사이트에서는 거의 20년 동안 미등록(게스트) 사용자에게만 광고를 제공합니다. 우리의 회원들은 오랜 정책상 광고를 전혀 보지 않습니다.

광고 타겟팅 예시

제가 관리해 온 모든 광고 서버는 이 방식으로 작동합니다.

게다가 ‘베어 메탈’ 레벨에서는 모든 광고(모든 광고 제공)를 특정 지역, 회원(수많은 기준에 기반) 및 기타 대상에 대해 끄도록 타겟팅할 수 있습니다. 이는 모든 상용 광고 서버를 사용하는 기본적인 광고 타겟팅입니다.

포럼에서는 사이트가 선택한 대로 불리언 값을 설정하여 특정 그룹에게 광고를 제공하지 않는 것이 비교적 쉽습니다.

그러나 디스코urs 플러그인의 경우, 당장은 광고를 제공할 계획이 없어 정확히 모르지만, 만약 제공하게 된다면 로그인한 사용자에게는 광고를 제공하지 않겠다고 약속합니다. 필요하다면 플러그인을 직접 수정하거나 제것을 만들더라도 말이죠 :slight_smile:

레거시 포럼 광고 관리 화면을 본 적 없는 분들을 위해, 두 장의 스크린샷을 첨부합니다. (현대적인 광고 플러그인은 훨씬 깔끔하니까요, LOL) 이 스크린샷은 레거시 vB 광고 관리 시스템의 전역 설정 페이지만을 보여주며, 광고 배치에 대한 상세 페이지는 아닙니다.

이것은 '광고 서버’가 아니라, 포럼 ID(카테고리), 사용자 그룹 등을 대상으로 광고를 배치하는 데 도움을 주는 플러그인일 뿐입니다. 이 모든 것은 매우 레거시적인 구성이며, 이제 거의 사용하지 않으므로 참고만 하시기 바랍니다.

그러나 스크린샷에서 볼 수 있듯이, 게스트, 등록 사용자, модератор, 리더 등 모든 사용자 그룹 클래스에 광고를 노출하거나 노출하지 않도록 쉽게 타겟팅할 수 있습니다.

참고로,

참고: bare metal(서버)에서는 지리 정보, 쿠키 등을 기반으로 타겟팅도 수행합니다. 솔직히 말하면, 이는 모두 아주 기본적인 광고 서빙 101에 해당합니다. 예를 들어, “독일에서는 1번 광고 서버를 사용하고”, "일본에서는 3번 광고 서버를 사용한다"는 식으로 쉽게 설정할 수 있습니다… (1) “bare metal”, (2) 좋은 “광고 배치 플러그인”, (3) "자체 광고 서버 운영"을 결합하면 가능성의 한계는 정말 하늘에 있습니다.

Discourse 광고 플러그인에 관해서…

제가 처음으로 이 플러그인을 살펴봤습니다.

$ pwd
/Users/Tim/desktop/discourse-adplugin/test/javascripts/acceptance
$ vi dfp-test.js.es6

제 생각에는 특정 신뢰 수준(trust level)과 그룹에 광고를 서빙하는 기본 기능이 이미 존재하는 것 같습니다(다만, 직접 테스트는 하지 않았지만, 이미 플러그인에 해당 기능이 포함되어 있어 꽤 직관적으로 보입니다…).

다음은 해당 코드입니다:

죄송합니다만, 이번 달에는 이 플러그인 작업을 제 계획에 포함시키지 않았습니다. 하지만 코드를 잠시 살펴본 결과, 신뢰 수준과 사용자 그룹을 기반으로 타겟팅하는 것은 꽤 직관적으로 보입니다.

어쨌든… 방금 문서를 확인해 보니… 대부분이 이미 discourse ad plugin에 존재하는 것 같습니다. 예를 들어(이 예시 설정에서는 adsense를 통한 신뢰 수준 기반 타겟팅):

Discourse의 광고 플러그인은 타겟팅을 처리하는 것이 아니라, 주로 광고 유닛 코드를 Discourse의 출력에 삽입하는 역할을 합니다. 지리 기반 타겟팅 등은 DFP(Ad Manager)와 같은 도구를 사용할 수 있습니다. 이 플러그인이 타겟팅 부분을 처리해야 한다고 생각하지 않습니다.

이미 특정 신뢰도 레벨 이상의 사용자에게만 광고를 표시하도록 설정하는 옵션이 있습니다. 저희의 필요(다시 말하지만, 저희의 SSO 설정에 특화된 것)는 그 반대입니다. 게스트는 동의를 제공하지 않았으므로 광고를 전혀 표시하지 않는 것입니다.

저는 Ruby와 Discourse 코드베이스에 익숙하지 않지만, 코드를 살펴보고 해결책을 찾아보겠습니다. 힌트를 주시면 감사하겠습니다.

여기서 확인해 보세요 (adsense 예제, 해당 디렉터리 내 각 파일은 다릅니다). 이 코드의 로직을 약간 수정하여 특정 신뢰도 수준이나 사용자 그룹(그 이하가 아닌) 이상의 사용자에게만 광고를 표시하도록 할 수 있습니다.

참고로 (힌트)

./discourse-adplugin/assets/javascripts/discourse/components

제가 이해한 바에 따르면 (멤버에게만 광고를 표시하는 것), 이 부분은 "수정"이 비교적 쉽고 재빌드(테스트는 좋아하는 스테이징 서버에서 진행)하여 요청하신 사항을 달성할 수 있을 것입니다. 신뢰도 수준이나 사용자 그룹을 기준으로 한다면, 수정은 거의 자명할 것입니다.

죄송합니다. 테스트는 해보지 않았고, 여러분을 위해 코드를 살펴본 것뿐입니다.

조금 제 생각을 말씀드리겠습니다.

광고를 특정 사용자 그룹에 타겟팅하거나(또는 특정 그룹에서는 건너뛰는) 기능을 제공하면 훨씬 합리적일 것입니다.

많은 커뮤니티에서는 비용을 지원하는 수단으로 광고 제거를 위한 유료 옵션을 제공합니다.

기존 포럼 소프트웨어에는 광고 코드 주위에 추가할 수 있는 이러한 옵션이 있습니다. 우리가 직접 수정하고 싶다면 Discourse에도 비슷한 기능이 있을까요?

<if !user_in($loggedinuser($usergroup[id])); />
Ad code here
</endif>

이런 식으로요. 좀 오래된 이야기라서 잘 기억이 안 납니다.

네, 이를 제어하는 설정이 있습니다. 사용자를 “구독자” 그룹에 추가하고 "그룹 광고 비활성화"에 포함시키면 됩니다.