# 스레드 카드뉴스 업로드 1건

## 작업 내용
보험저널 업계동향 주제로 카드뉴스를 생성하고 Threads에 업로드한다.

## 절차

### 1. 파이프라인으로 콘텐츠 생성
```bash
cd /home/jay/projects/ThreadAuto
source /home/jay/workspace/.env.keys
python3 -c "
import asyncio, json
from content.five_stage_pipeline import FiveStagePipeline
pipe = FiveStagePipeline()
result = asyncio.run(pipe.generate(content_type='cardnews', topic={'category': '업계동향'}))
print(json.dumps(result, ensure_ascii=False, indent=2))
"
```

### 2. 슬라이드 렌더링
파이프라인 결과에서 slides를 추출하여 렌더링:
```python
from renderer.cardnews import CardNewsRenderer
renderer = CardNewsRenderer()
paths = renderer.render_from_slides(slides)
```

### 3. 렌더링 결과 확인
생성된 이미지를 Read로 직접 눈으로 확인. 특히:
- body 슬라이드 텍스트박스에 "..." 말줄임이 없는지 확인
- CTA 슬라이드 골드 텍스트 줄바꿈·간격이 자연스러운지 확인

### 4. Threads 업로드
```python
from publisher.threads_publisher import ThreadsPublisher
pub = ThreadsPublisher()
result = pub.publish_cardnews(
    title="카드뉴스 제목",
    content={"slides": slides_data, "caption": caption_text}
)
```

### 5. 업로드 결과 보고
- post_id
- 슬라이드 수
- 이미지 경로 목록

## 주의사항
- content_type은 'cardnews' (cardnews_data 아님)
- topic은 dict 형태: {'category': '업계동향'}
- render_from_slides() 사용 (render() 아님)
- publish_cardnews()의 content 파라미터 사용 (image_paths 아님)
- 파이프라인 score가 REVIEW_PASS_THRESHOLD(42) 미만이면 재시도 (최대 2회)
- "..." 말줄임이 보이면 오류 → 보고할 것
