Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,10 @@ firebase-service-account.json
.claude/
.granite/
.playwright-mcp/

# 이미지/스크린샷
*.png
*.psd
*.jpg
*.jpeg
supabase/.temp/
7 changes: 7 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@
"supabase": {
"type": "http",
"url": "https://mcp.supabase.com/mcp?project_ref=mksvyxbnpowolmguaiye"
},
"pixellab": {
"type": "http",
"url": "https://api.pixellab.ai/mcp",
"headers": {
"Authorization": "Bearer a9203b01-384c-461f-a0f8-345ab8befa42"
}
}
}
}
117 changes: 117 additions & 0 deletions docs/adsense-appeal-log.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# AdSense 계정 정지 & 이의신청 기록

## 계정 정보
- **게시자 코드**: pub-6117642671440103
- **이메일**: designartkor@gmail.com
- **상태**: 무효 트래픽으로 영구 정지

---

## 타임라인

| 날짜 | 이벤트 |
|------|--------|
| 2026-02-05 | adService.ts 광고 모듈 추가 (git: a46a8e5) |
| 2026-02-07 | AdSense 승인 심사 1차 거부 |
| 2026-02-10 | 정책위반 수정 (robots.txt, noindex, 개인정보처리방침 등) |
| 2026-02-?? | AdSense 승인 심사 2차 거부 |
| 2026-02-15 | 계정 사용중지 통보 (무효 트래픽) |
| 2026-02-15 | localhost 스크립트 차단 수정 (git: 7f9b1b2) |
| 2026-02-15 | 1차 이의신청 제출 |
| 2026-02-?? | 2차 이의신청 제출 |
| 2026-02-24 | 2차 이의신청 기각 메일 수신 |
| 2026-02-24 | 3차 이의신청 제출 (아래 내용) |

---

## 정지 원인 분석

### 진짜 원인: localhost에서 AdSense 스크립트 로드

```
adService.ts의 loadAdScript()
환경 체크 없이 pagead2.googlesyndication.com 로드
localhost:9002에서 개발할 때마다 스크립트 반복 로드
Google이 "무효 트래픽"으로 자동 감지
승인도 안 된 상태에서 계정 영구 정지
```

### 핵심 팩트
- **광고 승인**: 2번 거부됨 (승인된 적 없음)
- **프로덕션 광고 노출**: 0회
- **수익**: $0 (한 푼도 벌지 못함)
- **부정클릭**: 불가능 (광고가 표시된 적 없으므로)
- **외부 트래픽**: Threads에 공유해서 일부 방문자 있었으나, 광고 미승인이라 노출 없음

### 공수달력(work-schedule-calculator)은 무관
- AdSense 코드 자체가 없음
- Toss 자체 광고 SDK (@apps-in-toss/framework) 사용
- 광고 ID: `ait.v2.live.5793197bc89e40e4` (토스 발급, AdSense 아님)
- 수익 정산도 토스를 통해서 (Google 계정 연동 없음)
- [공식 문서 확인](https://developers-apps-in-toss.toss.im/ads/develop.html): 개발자 AdMob/AdSense 계정 불필요

### 수정 완료 (2026-02-15)
```typescript
// src/lib/adService.ts - loadAdScript()
if (process.env.NODE_ENV !== 'production') {
console.log('[AdService] 프로덕션 환경이 아니므로 광고 스크립트를 로드하지 않습니다.');
resolve();
return;
}
```

---

## 3차 이의신청 내용 (2026-02-24 제출)

### 트래픽 경로
> This is a small indie game project (text-based RPG). I shared the site link on Threads (social media) to get early feedback from friends and followers. No paid traffic or promotional campaigns were used. The site is still in early development with minimal organic traffic.

### 정책 위반 여부 (이전 이의신청 정정 포함)
> CORRECTION FROM PREVIOUS APPEAL: In my previous appeals, I mentioned another app project (a Toss mini-app called "work-schedule-calculator"). After thorough investigation, I confirmed that app uses Toss's own proprietary ad SDK (@apps-in-toss/framework), which is 100% unrelated to Google AdSense. It has no connection to my AdSense account whatsoever.
>
> The only project connected to my AdSense account is "GIB" (https://gib-game-phi.vercel.app). My AdSense application was REJECTED TWICE during review - ads were never approved and never served in production. The ad module (adService.ts) was added on Feb 5, 2026 to prepare for future monetization, but the script inadvertently loaded on localhost during development because there was no environment check.

### 무효 활동 원인
> The invalid traffic was caused by a development environment error in my game project "GIB".
>
> Technical details:
> - On Feb 5, 2026 (git commit: a46a8e5), I added an ad service module (src/lib/adService.ts) that loads the AdSense script from pagead2.googlesyndication.com.
> - The loadAdScript() function did NOT have an environment check, so the script loaded every time I ran the development server on localhost:9002.
> - This caused repeated script loads from my development machine, which Google's system detected as invalid traffic.
> - My AdSense application was rejected twice - ads were NEVER approved, NEVER displayed in production, and NEVER clicked by anyone.
> - Total ad impressions: 0. Total earnings: $0.
> - There was absolutely zero motivation for click fraud because no ads were ever shown to any user.
>
> This was purely a coding mistake by a solo developer, not intentional invalid activity.

### 트래픽 품질 개선 계획
> The issue has already been permanently fixed.
>
> On Feb 15, 2026 (git commit: 7f9b1b2), I added an environment check to block the AdSense script from loading outside production:
>
> if (process.env.NODE_ENV !== 'production') {
> console.log('[AdService] Not production - blocking ad script load');
> return;
> }
>
> This ensures the AdSense script can NEVER load on localhost or any non-production environment again. The fix has been deployed and verified.

### 의심스러운 IP/리퍼러
> The invalid traffic primarily originated from my personal development machine (localhost:9002). During development, the AdSense script loaded repeatedly from pagead2.googlesyndication.com without an environment check.
>
> Note: I did share the site URL on Threads (social media), so there was some external visitor traffic. However, since my AdSense application was REJECTED TWICE and never approved, NO ads were ever displayed to any visitor. The AdSense script loaded in the background but served zero impressions. Therefore, no invalid clicks could have occurred from external visitors either — there were simply no ads to click.
>
> The traffic pattern from my development machine (single IP, repeated script loads during coding sessions) is the most likely source of the detected invalid activity.

---

## 다음 단계

- [ ] 3차 이의신청 결과 대기
- [ ] 기각 시 → 90일 후 (2026-05-25 이후) 재이의 검토
- [ ] 대안 광고 플랫폼 검토 (카카오 애드핏, 쿠팡 파트너스 등)
Loading