# 댓글 분류 프롬프트와 코드표

수집한 댓글을 표본으로 뽑지 않고 **한 줄도 빼지 않고** 읽어 분류하기 위한 프롬프트입니다.
`comment_dumps.py`가 만든 덤프(한 줄에 댓글 하나, `cid=` 포함)를 에이전트에게 나눠 주고 아래 프롬프트를 그대로 붙여 넣습니다.

## 프롬프트 (복사해서 사용)

```text
아래는 내 유튜브 채널의 댓글 덤프입니다. 한 줄이 댓글 하나이고, 맨 앞의 cid=… 가 댓글 ID입니다.
"↳"로 시작하는 줄은 바로 위 댓글의 답글이고, OWNER 표시가 붙은 줄은 채널 주인의 답글입니다.

규칙
1. 모든 줄을 읽고 모든 cid에 코드를 하나씩 붙입니다. 건너뛰거나 표본으로 고르지 않습니다.
2. 말투가 아니라 뜻으로 분류합니다. "굳이?"는 비판입니다.
3. OWNER 줄은 반드시 cat "owner"로 둡니다. 시청자 수와 부정 댓글 수에는 넣지 않습니다.
4. 비판·불만·실망이 조금이라도 들어 있으면 neg를 true로 둡니다(중립적인 댓글 안에 섞여 있어도 마찬가지).
5. 빠진 정보를 드러내는 질문(프롬프트가 어디 있나요? 어떤 도구인가요?)은 question으로 두고 태그를 붙입니다.
6. 댓글 작성자에게 답글을 쓰지 않습니다. 나에게 묻는 댓글은 note에 "확인 필요"라고만 적습니다.

출력: 댓글 하나당 JSON 한 줄(JSONL). 다른 설명은 쓰지 않습니다.
{"cid": "<cid>", "cat": "<분류>", "tags": ["<태그>", ...], "neg": true|false, "note": "<한 줄 근거>"}

cat 값: praise, discussion, question, request, criticism, misunderstanding,
personal_story, giveaway_entry, off_topic, spam_promo, other, owner
```

## 코드표

| cat | 이름 | 기준 | 예시(지어낸 문장) |
|---|---|---|---|
| `praise` | 칭찬 | 영상·채널·사람에 대한 긍정 반응이 중심 | "설명 순서가 깔끔해서 끝까지 봤어요" |
| `discussion` | 토론·의견 | 내용에 대한 자기 생각, 반론, 덧붙임 | "저는 이 단계는 사람이 직접 보는 게 맞다고 봐요" |
| `question` | 질문 | 무엇인가를 묻는 댓글. 빠진 정보를 드러내면 태그 추가 | "말씀하신 템플릿은 어디서 받을 수 있나요?" |
| `request` | 요청 | 다음 영상·자료·기능을 해 달라는 요구 | "다음엔 실제 화면으로 처음부터 보여 주세요" |
| `criticism` | 비판 | 영상·도구·채널에 대한 불만, 실망, 지적 | "제목이랑 내용이 좀 다른 것 같아요" |
| `misunderstanding` | 오해 | 영상 내용을 잘못 이해한 것이 드러나는 댓글 | "그럼 이건 유료 버전에서만 되는 거죠?"(영상은 무료판을 다룸) |
| `personal_story` | 경험담 | 자기 상황·경험을 이야기하는 댓글 | "저도 혼자 채널 분석하다가 지쳐서 그만뒀어요" |
| `giveaway_entry` | 이벤트 참여 | 이벤트·키워드 댓글 참여 | "참여합니다!" |
| `off_topic` | 무관 | 영상과 관계없는 내용 | "배경 음악 제목이 궁금해요" |
| `spam_promo` | 스팸·홍보 | 링크 홍보, 자동 생성 스팸 | "제 채널에도 놀러 오세요 ~" |
| `other` | 기타 | 위 어디에도 맞지 않음(이모지만 등) | "👍" |
| `owner` | 채널 주인 답글 | 채널 주인이 단 답글. 읽되 시청자 수에서 뺌 | (OWNER 줄 전부) |

### 태그 예시

자유롭게 붙이되 같은 뜻은 같은 이름으로 씁니다: `ai_voice`, `audio_overlap`, `wants_practical_demo`,
`title_mismatch`, `reproducibility`, `pinned_comment_missing`.

### 부정 판정(neg) 기준

- 비판·불만·실망이 들어 있으면 `true`. 칭찬 속에 섞인 지적("좋은데 소리가 작아요")도 `true`.
- 대상이 영상이 아니어도(도구, 채널, 업로드 주기) 불만이면 `true`.
- 가벼운 "나와는 안 맞네" 류도 약한 부정으로 `true`.
- `owner`는 항상 `false`.

## 집계할 때

- 비율은 **시청자 댓글**(채널 주인 답글 제외)을 분모로 하고, 그렇다고 적습니다.
- "모두 읽었다"는 **수집한 댓글**에 대한 말입니다. 영상별 공개 댓글 수를 먼저 기록하지 않았다면 "전체 댓글"이라고 하지 않습니다.
- 부정 댓글은 주제별로 묶어 원문 그대로 한곳에 모읍니다. 공개 자료에 옮길 때는 작성자 이름을 빼고 짧게만 인용합니다.
- `merge_comments.py`는 코드가 빠진 댓글, 중복 코드, 없는 분류, 채널 주인 답글의 잘못된 분류가 하나라도 있으면 실패합니다.
