Appearance
홈·콘텐츠 카드 댓글/반응 노출 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
| Layer | R-level | Review focus |
|---|---|---|
| Policy / Rule | R2 | 어떤 댓글/반응을 공개 카드에 끌어올릴지의 선정·품질·스포일러 정책. 잘못된·스포일러 댓글이 홈에 노출되면 신뢰·품질 타격이라 출시 전 고정 필요. |
| Data / Backend | R2 | 카드 list 응답에 대표 댓글·반응 수를 얹는 집계 방식. 성능·정합성과 운영 재작업 비용이 있어 spec/개발 설계에서 확정. |
| User-facing Surface | R1 | 어느 탭·카드 유형에 노출할지는 노출 토글로 조정 가능. |
| Copy / Visual Presentation | R1 | 표현 방식(대표 댓글 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 가설
- 콘텐츠 카드에 대표 댓글·반응 수를 노출하면, 카드가 더 매력적으로 보여 카드 CTR이 오른다.
- 더 설득된 상태로 진입하므로, 진입 후 씬 생성 전환율이 유지되거나 오른다(소셜 프루프가 기대를 과장해 진입 후 곧장 이탈시키지 않는다).
- 카드→진입→플레이 동선이 강화되어 D0 씬 생성 수가 오른다 — 가입 다음날 다시 들어올 이유로 이어진다.
1.5 성공 지표
| 지표 | 현재 | 목표 | 측정 방법 |
|---|---|---|---|
| 콘텐츠 카드 CTR (메인) | 미측정 | 출시 전 베이스라인 대비 유의미 상승 | 카드 노출 대비 클릭, 출시 전후 비교 |
| 콘텐츠 진입률 | 미측정 | 베이스라인 대비 비악화~상승 | 카드 클릭 대비 상세/플레이 진입 |
| 씬 생성 전환율 (가드레일) | 미측정 | 베이스라인 대비 비악화 | 진입 대비 첫 씬 생성 |
| D0 씬 생성 수 (이니셔티브) | 미측정 | 베이스라인 대비 상승 | D0 유저의 씬 생성 합계 |
- 메인 지표: 콘텐츠 카드 CTR — 변경 surface(카드)와 단위가 일치하고 본 PRD 범위에서 직접 움직일 수 있는 지표.
- 이니셔티브 지표: D0 씬 생성 수 — 본 개편 하나로 전부 닿는 목표는 아니며, 이니셔티브 차원에서 추적하는 보조 지표.
- 가드레일 (악화되면 안 되는 것): ① 씬 생성 전환율(낚시성 노출로 진입 후 이탈 방지) ② 카드에 노출된 댓글에 대한 신고율(공개 노출 품질).
- 출시 성공 판정: 메인(카드 CTR)이 출시 전 베이스라인 대비 유의미 상승 AND 가드레일(씬 생성 전환율·신고율) 비악화를 동시에 만족할 때 성공으로 본다. CTR 단독 상승은 낚시성일 수 있어 성공으로 보지 않는다. 전체 출시이므로 단계적 롤아웃(일부 비율 → 전체) 중 가드레일을 관측하며 확대한다.
- 출시 게이트: 소셜 프루프 커버리지가 일정 비율 미만이면 다수 카드에 소셜 프루프가 붙지 않아 효과가 희석되고 출시 효과 관측이 어렵다. 최소 커버리지 임계 미달 시 출시를 보류한다(임계값은 커버리지 데이터 수령 후 확정 — 🔍 참조).
2. 타깃 사용자
2.1 주요 사용자
- 홈·추천 surface에서 콘텐츠를 고르는 앱·웹 유저 전체가 노출 대상이되, 가설 검증의 핵심은 D0 신규 유저(아직 플레이 콘텐츠를 정하지 못한 상태).
- 사용 맥락: 가입 직후 또는 재방문 시 홈 탭을 훑으며 무엇을 플레이할지 결정하는 순간.
2.2 핵심 시나리오
- 신규 유저가 홈에서 콘텐츠를 고른다: 가입 직후 홈 추천 탭에서 카드를 훑다가, 한 카드에 "사람들이 이런 댓글을 남겼다 + 반응 수"가 보여 "재밌겠다" 싶어 진입 → 플레이(씬 생성)한다.
- 반응이 활발한 콘텐츠가 눈에 띈다: 비슷한 썸네일 카드들 사이에서 반응 수가 높은 카드가 사회적 증거로 구별되어 선택된다.
- 대표 댓글에서 댓글 영역으로 바로 진입한다: 카드의 대표 댓글 스니펫을 눌러 해당 에피소드의 댓글 영역으로 바로 들어가, 분위기를 확인하고 플레이로 이어간다.
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 핵심 지표
- 콘텐츠 카드 CTR: 카드 노출 대비 클릭률. 출시 전 베이스라인 대비 변화 관측이 핵심.
- 콘텐츠 진입률: 카드 클릭 대비 에피소드 상세/플레이 진입률.
- 씬 생성 전환율 (가드레일): 진입 대비 첫 씬 생성률. 낚시성 노출로 진입 후 이탈하지 않는지 확인.
- D0 씬 생성 수 (이니셔티브): D0 유저의 씬 생성 합계.
- 노출 댓글 신고율 (가드레일): 카드에 끌어올려진 댓글이 신고로 이어지는 비율.
5.2 로깅 이벤트
컨벤션·기존 이벤트 목록: https://event-docs.frontia.dev/ (Cloudflare Access — WARP/momo 세션). 본 PRD 작성 환경에서 직접 접근 불가하여 기존 카드 노출/클릭 이벤트명은 추정 표기, 실재명·파라미터는 spec §7에서 event-docs 대조 후 확정(§7 결정 필요).
핵심은 기존 카드 view/click 이벤트에 소셜프루프 노출 여부·타입 파라미터를 추가하는 것이며, 신규 이벤트는 최소화한다.
| 타입 | 이름 | 용도 | 파라미터 | 그룹 | 상태 |
|---|---|---|---|---|---|
| Event | view_home_content_card (명칭 추정) | 카드 노출 + 소셜 프루프 노출 여부 | episode_id, has_social_proof, social_proof_type(comment/reaction/both) | home 류 | 기존 재사용(파라미터 추가) |
| Event | click_home_content_card (명칭 추정) | 카드 클릭 (CTR 분모/분자) | episode_id, has_social_proof | home 류 | 기존 재사용(파라미터 추가) |
| Event | click_card_comment_snippet | 대표 댓글 스니펫 탭 → 댓글 영역 진입 | episode_id, comment_id, has_social_proof | home | 🆕 신규 |
6. Ubiquitous Language
"반응"은 기존 EpisodeLike/EpisodeComment 집계의 노출을, "대표 댓글"은 선행 PRD(에피소드 댓글 개선)의 고정>좋아요>최신 선정 로직을 그대로 가리킨다. 본 PRD 한정 약속어(노출 임계, 소셜 프루프 영역 등)는 §3 본문 정의로 충분하므로 UL에 등재하지 않는다.
| Term | Korean | Definition | Do Not Confuse With | Primary 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 다음 행동/콘텐츠 유도"