배경/문제
periodic-table(콘솔 miniAppId 36076)은 콘솔 IAA 지면이 0개이고 앱 코드에도 광고 배선이 없어 광고 수익이 0원이다. 2026-07-26~08-01 7일간 DAU 합 73 유저-일(13/16/10/7/10/7/10)로 워크스페이스 내 상위권 트래픽인데 수익은 IAA·IAP 모두 0이다. 같은 기간 lucid-chess는 131 유저-일에 498원, crossword 웹은 34 유저-일에 109원을 벌었다.
단, 이건 단순 배선 누락이 아니다. 저장소 문서에 "광고 사용 안 함"이 정책으로 명시돼 있다(docs/release-checklist.md:15, docs/apps-in-toss-registration.md:41,59,83). 즉 도입은 정책 변경을 수반하며, 그 판단이 이 이슈의 선행 관문이다.
근거 데이터
- 출처: AppsInToss 콘솔
dashboard_dau / dashboard_revenue_iaa / iaa_placement_group_list, workspaceId 38345, miniAppId 36076
iaa_placement_group_list(36076) → [] — 광고 지면 0개
- IAA 2026-07-26
08-01: ANDROID/IOS 모두 dailyReports: [], 노출 0·수익 0원. 30일(07-0308-01) 조회도 동일
- DAU 7일 합 73 유저-일, 신규 64명
- 평균 세션 12.4~46.7초(앱 특성상 매우 짧음)
- 유입: 미니앱홈 82~92% 지배
- 연령: 10대 98.6%(콘솔 minAge 14)
- IAP 0원
확인된 제약
- AIT 웹 미니앱이 쓸 수 있는 광고 API는
loadFullScreenAd / showFullScreenAd 전면광고 2종뿐이다(@apps-in-toss/web-bridge 타입 정의 확인). 배너 API는 존재하지 않는다. 따라서 도입 형태는 전면광고로 한정된다.
- 앱 화면 모드는
explore | quiz | quiz-result 3종(src/App.tsx:21). 전면광고를 넣을 자연스러운 경계는 퀴즈 완료 → 결과 전환 시점 하나뿐이다.
리스크 (착수 전 판단 필요)
- 정책·등록 변경: 문서에 "광고 없음"이 명시돼 있고 콘솔 등록 메타에도 반영돼 있을 수 있다. 문서와 콘솔 등록 정보를 함께 갱신해야 한다.
- 아동 비중: 10대 98.6%. 아동 대상 취급(개인맞춤광고 제한 등)을 콘솔 지면 설정에서 확인해야 한다.
- 짧은 세션: 평균 12~47초. 전면광고가 이탈을 키울 수 있으므로 빈도를 보수적으로 잡고 DAU·세션 회귀를 반드시 관측한다.
제안
- 콘솔에 INTERSTITIAL placement group 생성(
iaa_placement_group_create 또는 콘솔 웹) → adGroupId 확보
packages/ait-core에 전면광고 어댑터 추가. lucid-chess의 tossFullScreenAdRuntime.ts / tossFullScreenAdPolicy.ts 구조 참고(로드 재시도 백오프, 로드 타임아웃, show 가드)
- 트리거는 퀴즈 완료 → 결과 전환 1곳만.
answerQuiz의 마지막 문항 분기(src/App.tsx:159-162)
- 빈도 캡: 퀴즈 3회 완료당 1회, 최초 1회 완료는 제외(첫 인상 보호). 캡 상태는 ait-core의 Storage로 영속화
- 광고 미지원·로드 실패 시에도 결과 화면 전환이 막히지 않도록 폴백
- 계측: 로드/노출/스킵 사유 이벤트를
src/analytics.ts에 추가
- 문서 갱신:
docs/release-checklist.md:15, docs/apps-in-toss-registration.md:41,59,83
관련 파일
src/App.tsx:21(Mode), :150-168(answerQuiz), :171+(quiz 화면)
src/analytics.ts(trackQuizCompleted)
packages/ait-core/src/index.ts(어댑터 추가 위치, Storage/trackClick 기존 구현)
granite.config.ts(permissions)
docs/release-checklist.md, docs/apps-in-toss-registration.md
인수조건
규모
M
검증 방법
배포 후 7일간 콘솔 dashboard_revenue_iaa(36076)에서 노출 > 0·eCPM을 확인한다. 동시에 dashboard_dau / dashboard_session으로 DAU·평균 세션이 도입 전(7일 73 유저-일, 세션 12.4~46.7초) 대비 유의하게 하락하지 않는지 대조한다. 하락 시 빈도 캡을 올리거나 롤백한다.
데이터 기준일
2026-08-01
배경/문제
periodic-table(콘솔 miniAppId 36076)은 콘솔 IAA 지면이 0개이고 앱 코드에도 광고 배선이 없어 광고 수익이 0원이다. 2026-07-26~08-01 7일간 DAU 합 73 유저-일(13/16/10/7/10/7/10)로 워크스페이스 내 상위권 트래픽인데 수익은 IAA·IAP 모두 0이다. 같은 기간 lucid-chess는 131 유저-일에 498원, crossword 웹은 34 유저-일에 109원을 벌었다.
단, 이건 단순 배선 누락이 아니다. 저장소 문서에 "광고 사용 안 함"이 정책으로 명시돼 있다(
docs/release-checklist.md:15,docs/apps-in-toss-registration.md:41,59,83). 즉 도입은 정책 변경을 수반하며, 그 판단이 이 이슈의 선행 관문이다.근거 데이터
dashboard_dau/dashboard_revenue_iaa/iaa_placement_group_list, workspaceId 38345, miniAppId 36076iaa_placement_group_list(36076)→[]— 광고 지면 0개08-01: ANDROID/IOS 모두08-01) 조회도 동일dailyReports: [], 노출 0·수익 0원. 30일(07-03확인된 제약
loadFullScreenAd/showFullScreenAd전면광고 2종뿐이다(@apps-in-toss/web-bridge타입 정의 확인). 배너 API는 존재하지 않는다. 따라서 도입 형태는 전면광고로 한정된다.explore|quiz|quiz-result3종(src/App.tsx:21). 전면광고를 넣을 자연스러운 경계는 퀴즈 완료 → 결과 전환 시점 하나뿐이다.리스크 (착수 전 판단 필요)
제안
iaa_placement_group_create또는 콘솔 웹) →adGroupId확보packages/ait-core에 전면광고 어댑터 추가. lucid-chess의tossFullScreenAdRuntime.ts/tossFullScreenAdPolicy.ts구조 참고(로드 재시도 백오프, 로드 타임아웃, show 가드)answerQuiz의 마지막 문항 분기(src/App.tsx:159-162)src/analytics.ts에 추가docs/release-checklist.md:15,docs/apps-in-toss-registration.md:41,59,83관련 파일
src/App.tsx:21(Mode),:150-168(answerQuiz),:171+(quiz 화면)src/analytics.ts(trackQuizCompleted)packages/ait-core/src/index.ts(어댑터 추가 위치, Storage/trackClick 기존 구현)granite.config.ts(permissions)docs/release-checklist.md,docs/apps-in-toss-registration.md인수조건
adGroupId가 설정으로 주입된다(하드코딩 금지)npm run test/ lint / typecheck 통과규모
M
검증 방법
배포 후 7일간 콘솔
dashboard_revenue_iaa(36076)에서 노출 > 0·eCPM을 확인한다. 동시에dashboard_dau/dashboard_session으로 DAU·평균 세션이 도입 전(7일 73 유저-일, 세션 12.4~46.7초) 대비 유의하게 하락하지 않는지 대조한다. 하락 시 빈도 캡을 올리거나 롤백한다.데이터 기준일
2026-08-01