Skip to content

홈·콘텐츠 카드 댓글/반응 노출 PRD

Backlog grooming 단계의 산출물. 무엇을 만들지·왜 만들지·핵심 비즈니스 룰을 정의한다. 화면별 디테일(컴포넌트·상태·인터랙션)은 spec.md로.


Status: draft Created: 2026-06-01 Last updated: 2026-06-03 Linear Project: [앱/웹] 홈·콘텐츠 카드 댓글/반응 노출 (442369308472) Linear Issue: DEE-298 (PRD writing) Initiative: D0 다음 행동/콘텐츠 유도 Author: agent (prd-writer) / momo 앱/웹/스튜디오: 앱 + 웹


Reversal Risk Summary

LayerR-levelReview focus
Policy / RuleR2어떤 댓글/반응을 공개 카드에 끌어올릴지의 선정·품질·스포일러 정책. 잘못된·스포일러 댓글이 홈에 노출되면 신뢰·품질 타격이라 출시 전 고정 필요.
Data / BackendR2카드 list 응답에 대표 댓글·반응 수를 얹는 집계 방식. 성능·정합성과 운영 재작업 비용이 있어 spec/개발 설계에서 확정.
User-facing SurfaceR1어느 탭·카드 유형에 노출할지는 노출 토글로 조정 가능.
Copy / Visual PresentationR1표현 방식(대표 댓글 1줄 vs 반응 수 vs 불타는 댓글 배지)은 출시 후 빠르게 조정 가능.

1. 목표 및 배경

1.1 문제

홈 추천 탭에서 콘텐츠를 고르는 유저(특히 아직 무엇을 플레이할지 못 정한 D0 신규 유저)는, 카드가 썸네일·제목·누적 플레이 수만 보여줘 "지금 재밌고 활기 있다"는 설득을 못 받는다. 그래서 진입을 미루거나 아무거나 누르고 이탈한다.

1.2 근거

  • 왜 지금: 6월 Focus Goal("가입 유저가 다음날 들어올 이유를 만든다")·이니셔티브("D0 다음 행동/콘텐츠 유도")의 직접 타깃. 카드 단계에서 콘텐츠 매력을 높여 D0 진입·플레이를 끌어올린다.
  • 왜 가능: 카드에 끌어올릴 반응 데이터(좋아요·댓글 집계)와 대표 댓글 선정 로직이 이미 production에 있다(선행 "에피소드 댓글 개선", Released). 신규 모델 없이 기존 집계의 노출 위치 확장이라 비용이 낮다. (데이터·로직 출처는 §3-1·§6 참조)
  • 검증 입력 (미수령, 🔍 데이터 agent): 카드 CTR 등 베이스라인과 소셜 프루프 커버리지(반응을 가진 에피소드 비율)는 미측정 — 노출 임계·출시 게이트 결정의 입력.

1.3 아이디어 (해결 방향)

콘텐츠 카드에 소셜 프루프(대표 댓글 1줄 + 반응 수)를 노출해, 카드가 "지금 사람들이 반응하는 콘텐츠"로 보이게 한다. 대표 댓글 로직이 이미 production에 있어 신규 모델 비용 없이 가장 설득력 있는 표현을 만들 수 있기 때문. 첫 출시는 추천 탭 전체에 노출하고, "반응 수만"·"불타는 댓글 배지" 등 표현 변형(R1)은 출시 후 조정한다.

1.4 가설

  1. 콘텐츠 카드에 대표 댓글·반응 수를 노출하면, 카드가 더 매력적으로 보여 카드 CTR이 오른다.
  2. 더 설득된 상태로 진입하므로, 진입 후 씬 생성 전환율이 유지되거나 오른다(소셜 프루프가 기대를 과장해 진입 후 곧장 이탈시키지 않는다).
  3. 카드→진입→플레이 동선이 강화되어 D0 씬 생성 수가 오른다 — 가입 다음날 다시 들어올 이유로 이어진다.

1.5 성공 지표

지표현재목표측정 방법
콘텐츠 카드 CTR (메인)미측정출시 전 베이스라인 대비 유의미 상승카드 노출 대비 클릭, 출시 전후 비교
콘텐츠 진입률미측정베이스라인 대비 비악화~상승카드 클릭 대비 상세/플레이 진입
씬 생성 전환율 (가드레일)미측정베이스라인 대비 비악화진입 대비 첫 씬 생성
D0 씬 생성 수 (이니셔티브)미측정베이스라인 대비 상승D0 유저의 씬 생성 합계
  • 메인 지표: 콘텐츠 카드 CTR — 변경 surface(카드)와 단위가 일치하고 본 PRD 범위에서 직접 움직일 수 있는 지표.
  • 이니셔티브 지표: D0 씬 생성 수 — 본 개편 하나로 전부 닿는 목표는 아니며, 이니셔티브 차원에서 추적하는 보조 지표.
  • 가드레일 (악화되면 안 되는 것): ① 씬 생성 전환율(낚시성 노출로 진입 후 이탈 방지) ② 카드에 노출된 댓글에 대한 신고율(공개 노출 품질).
  • 출시 성공 판정: 메인(카드 CTR)이 출시 전 베이스라인 대비 유의미 상승 AND 가드레일(씬 생성 전환율·신고율) 비악화를 동시에 만족할 때 성공으로 본다. CTR 단독 상승은 낚시성일 수 있어 성공으로 보지 않는다. 전체 출시이므로 단계적 롤아웃(일부 비율 → 전체) 중 가드레일을 관측하며 확대한다.
  • 출시 게이트: 소셜 프루프 커버리지가 일정 비율 미만이면 다수 카드에 소셜 프루프가 붙지 않아 효과가 희석되고 출시 효과 관측이 어렵다. 최소 커버리지 임계 미달 시 출시를 보류한다(임계값은 커버리지 데이터 수령 후 확정 — 🔍 참조).

2. 타깃 사용자

2.1 주요 사용자

  • 홈·추천 surface에서 콘텐츠를 고르는 앱·웹 유저 전체가 노출 대상이되, 가설 검증의 핵심은 D0 신규 유저(아직 플레이 콘텐츠를 정하지 못한 상태).
  • 사용 맥락: 가입 직후 또는 재방문 시 홈 탭을 훑으며 무엇을 플레이할지 결정하는 순간.

2.2 핵심 시나리오

  1. 신규 유저가 홈에서 콘텐츠를 고른다: 가입 직후 홈 추천 탭에서 카드를 훑다가, 한 카드에 "사람들이 이런 댓글을 남겼다 + 반응 수"가 보여 "재밌겠다" 싶어 진입 → 플레이(씬 생성)한다.
  2. 반응이 활발한 콘텐츠가 눈에 띈다: 비슷한 썸네일 카드들 사이에서 반응 수가 높은 카드가 사회적 증거로 구별되어 선택된다.
  3. 대표 댓글에서 댓글 영역으로 바로 진입한다: 카드의 대표 댓글 스니펫을 눌러 해당 에피소드의 댓글 영역으로 바로 들어가, 분위기를 확인하고 플레이로 이어간다.

3. 핵심 기능 요구사항

3-1. 콘텐츠 카드 소셜 프루프 노출

  • 주요 동작: 콘텐츠 카드에 대표 댓글 1줄과 반응 수(댓글 수·좋아요 수)를 노출한다.
  • 노출 surface (이번 범위):
    • 추천 탭의 콘텐츠 카드를 1차 노출 대상으로 한다.
    • 랭킹/신작 탭, 검색 결과 카드로의 확장은 surface 토글(R1)로 후속 결정 — 첫 출시는 추천 탭으로 좁혀 전체 노출.
  • 반응(reaction) 정의: 본 PRD에서 "반응"은 기존 EpisodeLike(좋아요)와 EpisodeComment(댓글) 집계를 뜻한다.
  • 대표 댓글 선정 기준 (선행 PRD 재사용):
    • 고정 댓글이 있으면 고정 댓글, 없으면 좋아요 최다 댓글, 둘 다 없으면 최신 댓글을 1개 노출.
    • 노출 길이: 1줄(말줄임). 정확한 글자 수는 spec/디자인에서 확정.
  • 댓글 소스/정렬 후보 (MVP): 전체 에피소드에서 ① 최근 기간 + 좋아요 수 상위 댓글, ② 운영/디렉터 선정(고정) 댓글, ③ 제외 리스트(신고·부적절) 기반 필터. 첫 출시는 ①·②(전체 에피소드 대상)로 시작하고, 세그먼트(타깃)별 맞춤 댓글 큐레이션은 후속·고비용 범위(§🔍, §3-3 제외).
  • 운영 선정·제외 (필수): 홈 카드에 끌어올리는 댓글은 무작위·저품질 댓글이 노출되지 않도록 운영의 선정/제외(모더레이션) 통제가 필요하다 — 노출 후보에서 제외(제외 리스트), 운영/디렉터 고정 댓글 우선. 신규 전용 댓글 관리 도구를 새로 만들기보다 기존 고정·신고·삭제 자산 + 제외 리스트 운영으로 1차 충족(§3-3).
  • 노출 UI 후보: 댓글 + 에피소드 카드 묶음, 댓글이 여럿이면 캐러셀(carousel). 최소·최대 노출 개수는 열어둔다(§🔍).
  • 노출 임계 (cold start 방지): 댓글·반응이 너무 적은 카드에 빈약한 소셜 프루프를 노출하면 오히려 "썰렁해" 보인다. 최소 노출 임계(예: 댓글 ≥1개 또는 좋아요 ≥N개)를 둔다. 임계값은 §7 결정 필요.
  • 품질·안전 정책: 신고·차단·삭제된 댓글, 삭제된 댓글입니다 placeholder는 대표 댓글 후보에서 제외(기존 trust-safety·댓글 정책 재사용). 미성년 유저에게 노출되는 카드의 대표 댓글 텍스트가 성인 표현/욕설을 담을 수 있는데, 콘텐츠 등급 기반 catalog 규칙은 카드 노출 여부만 제어하고 댓글 텍스트 자체를 필터하지 않는다. 댓글 텍스트 레벨 필터를 이번 범위에 둘지는 🔍 결정 필요.
  • 스포일러 정책: 끌어올린 댓글이 스토리 전개를 누설할 수 있다. 자동 스포일러 탐지는 이번 범위 밖이며, 운영/선정 기준(예: 디렉터 고정 댓글 우선, 신고 기반 제외)으로 1차 방어한다. 정책 강도는 §7 결정 필요.
  • 카드 탭 동작: 카드 본문 탭은 기존 카드와 동일하게 에피소드 상세/플레이로 진입한다. 대표 댓글 스니펫 탭은 해당 에피소드의 댓글 영역(/episode/:episodeId/comments, 기존 path 재사용)으로 진입한다.
  • 상태별 동작:
    • 임계 미달(댓글·반응 부족) 카드: 소셜 프루프 영역 미노출, 기존 카드 형태 유지.
    • 비로그인: 카드 노출 자체는 동일. 댓글 영역 진입 시 기존 비로그인 정책을 따른다.

3-2. 출시·롤아웃 및 관측

  • 출시 방식: 추천 탭 카드 전체에 소셜 프루프를 노출한다(임계 충족 카드 한정 — §3-1). 별도 실험 설계나 유저·카드별 분기 처리는 두지 않는다.
  • 단계적 롤아웃: 일부 비율 노출 → 가드레일 관측 → 전체 노출 순으로 확대해 위험을 통제한다. 롤아웃 비율·확대 속도는 spec/배포 설정에서 확정.
  • 판정 기준: 메인 지표(카드 CTR)가 출시 전 베이스라인 대비 유의미 상승 + 가드레일(씬 생성 전환율·신고율) 비악화. 가드레일 악화 시 롤아웃 중단/롤백.
  • 관측 방식: 출시 전후 동일 surface(추천 탭) 시계열 비교. 소셜 프루프 노출 여부·커버리지·신고율을 로깅으로 상시 관측한다(§5).

3-3. Scope

포함 (In scope)

  • 홈 추천 탭 콘텐츠 카드에 대표 댓글 1줄 + 반응 수 노출.
  • 대표 댓글 선정·노출 임계·품질/스포일러 제외 정책.
  • 전체 출시 로깅 + 가드레일 관측(소셜 프루프 노출 여부·커버리지·신고율) 및 단계적 롤아웃.
  • 대표 댓글 스니펫 → 댓글 영역 딥링크(기존 path).

제외 (Out of scope)

  • 신규 이모지/반응 타입 등 새로운 반응 모델 도입.
  • 스포일러 자동 탐지(ML/룰 엔진).
  • 디렉터·운영자용 신규 댓글 관리 도구(고정·삭제는 기존 에피소드 댓글 개선 범위로 충분).
  • 댓글 작성/정렬 플로우 변경.
  • 랭킹/신작/검색 등 추천 탭 외 surface로의 동시 확장(후속 surface 토글).

4. 에러 처리 및 예외 상황

상황처리 방향
카드의 대표 댓글이 노출 직후 삭제/신고됨다음 후보로 대체하거나 소셜 프루프 영역 숨김. 깨진 스니펫 노출 금지.
댓글·반응이 임계 미달소셜 프루프 영역 미노출, 기존 카드 형태로 표시.
댓글/반응 집계 로드 실패소셜 프루프 없이 기존 카드 렌더(카드 자체 노출은 막지 않음).
스니펫 탭 후 댓글 영역 진입 실패(삭제된 에피소드 등)안내 후 홈/상위로 복귀.
미성년 유저 + 성인 콘텐츠 카드기존 catalog 노출/성인 인증 규칙을 그대로 따른다.

5. 데이터 분석

5.1 핵심 지표

  1. 콘텐츠 카드 CTR: 카드 노출 대비 클릭률. 출시 전 베이스라인 대비 변화 관측이 핵심.
  2. 콘텐츠 진입률: 카드 클릭 대비 에피소드 상세/플레이 진입률.
  3. 씬 생성 전환율 (가드레일): 진입 대비 첫 씬 생성률. 낚시성 노출로 진입 후 이탈하지 않는지 확인.
  4. D0 씬 생성 수 (이니셔티브): D0 유저의 씬 생성 합계.
  5. 노출 댓글 신고율 (가드레일): 카드에 끌어올려진 댓글이 신고로 이어지는 비율.

5.2 로깅 이벤트

컨벤션·기존 이벤트 목록: https://event-docs.frontia.dev/ (Cloudflare Access — WARP/momo 세션). 본 PRD 작성 환경에서 직접 접근 불가하여 기존 카드 노출/클릭 이벤트명은 추정 표기, 실재명·파라미터는 spec §7에서 event-docs 대조 후 확정(§7 결정 필요).

핵심은 기존 카드 view/click 이벤트에 소셜프루프 노출 여부·타입 파라미터를 추가하는 것이며, 신규 이벤트는 최소화한다.

타입이름용도파라미터그룹상태
Eventview_home_content_card (명칭 추정)카드 노출 + 소셜 프루프 노출 여부episode_id, has_social_proof, social_proof_type(comment/reaction/both)home기존 재사용(파라미터 추가)
Eventclick_home_content_card (명칭 추정)카드 클릭 (CTR 분모/분자)episode_id, has_social_proofhome기존 재사용(파라미터 추가)
Eventclick_card_comment_snippet대표 댓글 스니펫 탭 → 댓글 영역 진입episode_id, comment_id, has_social_proofhome🆕 신규

6. Ubiquitous Language

"반응"은 기존 EpisodeLike/EpisodeComment 집계의 노출을, "대표 댓글"은 선행 PRD(에피소드 댓글 개선)의 고정>좋아요>최신 선정 로직을 그대로 가리킨다. 본 PRD 한정 약속어(노출 임계, 소셜 프루프 영역 등)는 §3 본문 정의로 충분하므로 UL에 등재하지 않는다.

TermKoreanDefinitionDo Not Confuse WithPrimary Domain상태
Episode Like좋아요profile의 에피소드 좋아요 (반응 수의 구성 요소)댓글 좋아요Social / Community기존
Episode Comment댓글에피소드 댓글/대댓글 (대표 댓글 후보)post 댓글Social / Community기존
Pinned Comment고정 댓글디렉터가 자기 에피소드에서 고정한 댓글 (대표 댓글 1순위)일반 댓글Social / Community기존

🔍 검토 필요

Spec 단계로 넘기기 전 결정·추정·외부 의존을 한곳에 모은다. 본문에 이미 결정된 사항은 중복하지 않는다.

🚨 결정 필요 (큰 결정)

  • 노출 임계값 (Policy R2) — 대표 댓글·반응을 노출할 최소 기준(댓글 N개 / 좋아요 N개). 동시에 출시 게이트인 최소 커버리지 임계(§1.5)도 같이 정한다. 입력: 커버리지 데이터. 누구에게: momo(PM) + 데이터.
  • 스포일러 정책 강도 (Policy R2) — 자동 탐지 없이 선정·운영 기준만으로 충분한가, 아니면 디렉터 고정 댓글만 노출 등 더 보수적으로 갈 것인가. 누구에게: momo + 운영(Trust & Safety).
  • 미성년 노출 카드의 댓글 텍스트 필터 (Policy R2) — 콘텐츠 등급 규칙은 카드 노출만 제어한다. 댓글 텍스트 레벨 필터를 이번 범위에 둘지(§3-1). 누구에게: momo + 운영.

⚠️ 추정 (정보 부족하지만 진행)

  • 기존 홈 카드 view/click 이벤트를 view_home_content_card/click_home_content_card(그룹 home)로 추정 — event-docs(Cloudflare) 본 환경 미접근. 재사용 후보 그룹은 home으로 확정하되 실재명·파라미터는 spec §7에서 event-docs 대조 후 확정.
  • 메인·가드레일 지표 베이스라인 전부 미측정 — 본 PRD는 정책·전체 출시/롤아웃 기준만 확정하고, 수치는 momo가 데이터 agent 수령분(기존 추천 탭 카드 CTR 등 동일 surface 실측치)으로 출시 직전 채운다.

❓ 외부 agent 호출 필요 (sprint-prep이 직접 못 가져옴)

  • 데이터 agent: ① 카드 CTR·콘텐츠 진입률·씬 생성 전환율·D0 씬 생성 수 베이스라인 ② 소셜 프루프 커버리지 — 댓글 ≥1 또는 좋아요 ≥N을 가진 에피소드 비율(노출 임계·출시 게이트 결정의 입력) ③ 기존 카드 view/click 이벤트 실재명.
  • 코드 agent: ① 홈 카드 렌더 컴포넌트(componentType)가 댓글/반응 데이터를 받을 수 있는 구조인지 ② 카드 list API가 댓글 수·좋아요 수·대표 댓글을 반환하는지/추가 비용 ③ 대표 댓글 계산 로직 위치(재사용 가능 여부). → 카드 list 응답 집계 방식(Data R2)은 이 결과로 spec/개발 설계에서 확정.
  • 디자이너 / Figma: 카드 내 대표 댓글 1줄 + 반응 수 노출 변형(추천 탭 카드 컴포넌트), 임계 미달 시 fallback 형태.

부록: 메타 정보

Required artifacts

  • [x] Spec (needs-spec) — 카드 컴포넌트 소셜 프루프 노출 상태·인터랙션 명세
  • [x] Design (needs-design) — 추천 탭 카드 변형 시안 (대표 댓글 1줄 + 반응 수, 임계 미달 fallback)
  • [x] QA scenarios (needs-qa-scenarios) — 임계/품질 제외/롤아웃·가드레일 테스트 시나리오
  • [x] Tracking events (needs-tracking) — 카드 이벤트 파라미터 추가 + 신규 스니펫 클릭 이벤트
  • [ ] Migration plan (needs-migration) — 해당 없음(신규 데이터 모델 없음)

Size & Risks

T-shirt Size

  • Size: M
  • Confidence: medium
  • 추정 근거: 신규 데이터 모델 없음(기존 집계 재사용)이라 BE는 list 응답 확장 수준이나, 카드 컴포넌트 변형 + 전체 출시 로깅/롤아웃 + 품질/스포일러 정책 + 커버리지 검증이 묶여 있음.

주요 위험 요소

위험영향대응
소셜 프루프 커버리지 부족임계 미달 카드가 많아 실제 노출 카드가 적어 출시 효과 관측이 어려움출시 전 커버리지 데이터로 임계값·노출 범위 조정
스포일러/부적절 댓글 공개 노출신뢰·품질 타격, 신고 증가선정 기준(고정 우선)·신고 제외, 신고율 가드레일 모니터
낚시성 진입CTR은 오르나 씬 생성 전환↓씬 생성 전환율 가드레일로 판정

의존성

  • 다른 작업: 에피소드 댓글 개선(대표 댓글 로직, Released) — 재사용 기반.
  • 다른 팀: 데이터(베이스라인·커버리지), 디자인(카드 변형).
  • 외부 요인: 카드 list API의 댓글/반응 집계 반환 여부(코드 agent 확인).

References

  • 선행 PRD: deployed/2026-03-24_에피소드 댓글 개선 PRD.md (대표 댓글 로직), deployed/2026-03-09_홈에 띠 배너 넣기 PRD.md (홈 추천 탭 section 구조)
  • Frontia wiki: wiki/domains/social-community/capabilities.md, wiki/domains/discovery/capabilities.md
  • Linear: DEE-298 (PRD writing), Project 442369308472, Initiative "D0 다음 행동/콘텐츠 유도"