# task-691: ThreadAuto 카드뉴스 콘텐츠 1건 생성 + Threads 업로드

## 작업 내용
화이트리스트 토픽에서 1건 선정 → 카드뉴스 콘텐츠 생성 → 이미지 생성 → Threads 업로드

## 절차

### 1. 토픽 선정
- 프로젝트 경로: `/home/jay/projects/ThreadAuto/`
- 화이트리스트: `content/whitelist_config.py` → `AUTO_PUBLISH_WHITELIST` (29개 무조건 + 2개 조건부)
- 토픽 DB: `content/evergreen_topics.json`
- 무조건 화이트리스트에서 1개 선정 (3팀 텍스트형과 다른 토픽 선택)
- 조건부 토픽 eg-112, eg-120은 수치 언급 금지 조건 있으므로 주의

### 2. 카드뉴스 콘텐츠 생성
- 콘텐츠 타입: `cardnews`
- `content/generator.py`의 `ContentGenerator` 또는 `content/content_generator_v2.py` 사용
- 또는 `cli.py generate --source manual --text "토픽 내용" --type TypeA` 활용
- 슬라이드 구조: title + body per slide
- 슬라이드당 글자수: 30~80자

### 3. 이미지 생성
- 카드뉴스 이미지 생성: Pillow 기반
- `publisher/image_server.py` 확인하여 이미지 생성 방식 파악
- 또는 기존 카드뉴스 이미지 생성 코드 활용
- 생성된 이미지를 공개 접근 가능한 URL로 제공해야 함 (Threads API 요구사항)

### 4. 콘텐츠 검증
- `content/validate_rules.py`의 규칙 적용
- 금칙어 체크: "보장합니다", "확실히", "무조건", "최대", "최소"

### 5. Threads 업로드
```bash
cd /home/jay/projects/ThreadAuto
# 이미지가 공개 URL에 호스팅된 경우
python3 cli.py post-image "<이미지_공개_URL>" "캡션 텍스트"
```
- 토큰 유효성 확인
- 이미지 URL은 반드시 공개 접근 가능해야 함 (Threads API 제한)
- 이미지 서버(`publisher/image_server.py`)를 로컬에서 실행하고 공개 접근 가능하게 하거나, 다른 호스팅 방법 사용
- 업로드 성공 시 Post ID 기록
- 실패 시 에러 로그 보존

### 6. 결과 보고
- 선택한 토픽 ID + 제목
- 생성된 카드뉴스 슬라이드 내용
- 생성된 이미지 파일 경로
- Threads Post ID (성공 시)
- 에러 로그 (실패 시 — 반드시 보존)

## 주의사항
- ★ 테스트 결과물은 제이회장님 확인 후에만 삭제 (자동 삭제 금지)
- ★ 실패 로그 보존 필수, 성공 건만 보고 금지
- ★ 의미 있는 콘텐츠 생성 (검정 화면, 더미 이미지 등 무의미 데이터 금지)
- ★ 이미지 퀄리티 확인: 텍스트 잘림, 배경 깨짐 없는지 직접 확인

## 산출물
- 생성된 카드뉴스 이미지 파일
- `memory/reports/task-691.md` 업로드 결과 보고서
