← 블로그로 돌아가기
개발 2026년 2월 5일
Claude API로 멀티채널 콘텐츠 자동 생성
원본 하나로 Reddit, Twitter, 블로그, 이메일, Product Hunt용 콘텐츠를 자동 생성하는 방법.
Claude API AI Python PromoEngine
문제: 채널마다 다른 글쓰기
프로젝트를 홍보할 때, 같은 내용이라도 채널마다 형식이 다르다.
- Reddit: 커뮤니티 문화에 맞춘 자연스러운 톤, 셀프 프로모션 티를 내면 다운보트
- Twitter/X: 280자, 임팩트 있는 첫 줄, 스레드 구조
- 블로그: SEO 최적화, 소제목 구조, 1,000자 이상
- 이메일 뉴스레터: 개인적인 톤, CTA 포함
- Product Hunt: 기능 중심, 스크린샷 설명, 경쟁 제품 대비 차별점
하나하나 수동으로 쓰면 반나절이 걸린다. PromoEngine은 이걸 자동화한다.
왜 Claude API인가
PromoEngine에서 Claude를 선택한 이유는 지시 따르기(instruction following) 능력이다.
각 채널의 포맷과 톤을 상세히 지정하면, Claude는 그 규칙을 거의 정확히 따른다. 특히 “~하지 마세요” 같은 부정 지시를 잘 이해한다. 홍보 콘텐츠에서 “셀프 프로모션 티를 내지 마세요”는 핵심적인 지시인데, 이걸 잘 지키는 모델이 필요했다.
아키텍처
원본 콘텐츠 (마크다운)
↓
PromoEngine CLI
↓
┌─────────────────────────────┐
│ 채널별 프롬프트 템플릿 │
│ - reddit.txt │
│ - twitter.txt │
│ - blog.txt │
│ - email.txt │
│ - producthunt.txt │
└─────────────────────────────┘
↓
Claude API (병렬 호출)
↓
채널별 결과물 → SQLite 저장
채널별 프롬프트
Reddit용 프롬프트의 핵심 부분:
## 톤 규칙
- 개발자 커뮤니티에서 자연스럽게 대화하는 톤
- "우리 프로젝트를 소개합니다" 스타일 금지
- "이런 문제가 있어서 만들었다"로 시작
- 기술적 디테일을 포함하되 자랑하지 않기
- 피드백을 구하는 것으로 마무리
## 구조
1. 문제 설명 (2~3문장)
2. 해결 방법 (기술 스택 포함)
3. 현재 상태 (MVP/베타/정식)
4. 피드백 요청
Twitter용은 완전히 다르다:
## 규칙
- 첫 트윗에 핵심 가치를 담을 것
- 총 5개 이하의 트윗 스레드
- 각 트윗은 240자 이내
- 마지막 트윗에 링크 포함
- 이모지는 트윗당 최대 1개
병렬 처리
5개 채널을 순차 호출하면 느리다. Python의 asyncio로 병렬 처리한다.
import asyncio
import anthropic
client = anthropic.AsyncAnthropic()
async def generate_channel(content: str, channel: str) -> str:
template = load_template(channel)
prompt = template.format(content=content)
response = await client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2000,
messages=[{"role": "user", "content": prompt}],
)
return response.content[0].text
async def generate_all(content: str) -> dict:
channels = ['reddit', 'twitter', 'blog', 'email', 'producthunt']
tasks = [generate_channel(content, ch) for ch in channels]
results = await asyncio.gather(*tasks)
return dict(zip(channels, results))
5개 채널이 동시에 생성되므로, 순차 대비 5배 빠르다.
결과 관리
생성된 콘텐츠는 SQLite에 저장한다. 나중에 어떤 버전이 효과적이었는지 비교할 수 있다.
def save_results(project: str, results: dict):
conn = sqlite3.connect('promoengine.db')
for channel, content in results.items():
conn.execute(
'INSERT INTO outputs (project, channel, content, created_at) VALUES (?, ?, ?, ?)',
(project, channel, content, datetime.now().isoformat())
)
conn.commit()
CLI 인터페이스
# 원본 파일에서 전 채널 생성
promo generate --source ./keybox-intro.md
# 특정 채널만
promo generate --source ./keybox-intro.md --channel reddit,twitter
# 이전 결과 조회
promo list --project keybox
정리
멀티채널 콘텐츠 생성은 AI가 잘하는 영역이다. 핵심은 채널별 규칙을 프롬프트에 명확히 정의하는 것이다. Claude API의 지시 따르기 능력과 Python의 비동기 처리를 조합하면, 원본 하나로 5개 채널 콘텐츠를 1분 안에 만들 수 있다.