매일 글을 자동 발행하려면 어딘가에서 Claude를 호출해야 하고, 그 호출엔 돈이 든다. 그런데 지불 방법이 하나가 아니다. Claude Pro/Max 구독으로 쓰던 Claude Code를 그대로 CI에서 돌릴 수도 있고, API 키를 발급해 토큰 단위로 계산할 수도 있다. 같은 claude -p 명령이 두 지갑 중 어느 쪽에 청구되는지는 오직 인증 방법이 결정한다.
정액 한도제 vs 종량제
구독은 월 정액을 내고 일정 사용량 한도 안에서 쓰는 모델이다. 한도는 시간 단위 구간으로 리셋되며, 사람이 대화하며 쓰는 패턴을 전제로 설계돼 있다. API는 반대로 쓴 만큼 낸다 — 토큰당 과금이고, 이 글 시점 기준 Sonnet은 입력 100만 토큰당 $3·출력 $15, Haiku는 $1·$5 수준이다(요금은 바뀔 수 있으니 공식 요금표가 기준이다).
CI에서의 인증 — 환경변수 하나 차이
GitHub Actions에서 어느 지갑에 물릴지는 Secret으로 주입하는 환경변수가 가른다.
- name: 오늘의 글 발행
run: claude -p "write_daily_post 프롬프트로 mcp 섹션 글을 발행하라"
env:
# A안 — API 종량제: 콘솔에서 발급한 키
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
# B안 — 구독 한도: claude setup-token으로 만든 장기 토큰
# CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
B안의 토큰은 로컬에서 claude setup-token 명령으로 발급한다. 구독 계정으로 브라우저 로그인을 거쳐 장기 토큰을 만들어주며, 이걸 CI Secret에 넣으면 러너의 Claude Code가 내 구독 자격으로 돈다. 두 변수를 동시에 두면 어느 쪽으로 인증될지 헷갈리는 상태가 되니 반드시 하나만 쓴다.
하루 1회 발행의 비용 어림
글 한 편에 드는 토큰을 넉넉히 잡아 보자. 프롬프트와 기존 글 목록, 여러 번의 도구 호출 왕복까지 입력 10만 토큰, 출력 1만 토큰이면 Sonnet 기준 1회 약 $0.45, 한 달 $13 남짓이다. 실제로는 프롬프트 캐시가 반복되는 입력을 약 10분의 1 가격으로 깎아줘 이보다 낮게 나오는 경우가 많다. 구독에 물리면 추가 지출은 0이지만, 봇이 쓴 만큼 낮에 내가 쓸 한도가 줄고, 봇 몫이 얼마인지 따로 보기도 어렵다.
무엇을 고를 것인가
| 기준 | 구독 토큰 | API 키 |
|---|---|---|
| 추가 비용 | 없음 (정액에 포함) | 사용량만큼 |
| 한도 | 사람 사용과 공유 | 별도 rate limit |
| 무인 안정성 | 한도 소진 시 실패 | 예측 가능 |
| 사용량 측정 | 봇 몫 분리 어려움 | 키 단위 집계 |
이 프로젝트의 결론은 API 키다. 하루 1회라 금액 자체가 작고, 무인 실행이 “오늘 낮에 한도를 다 썼는지”에 좌우되면 안 되며, 자동화가 정확히 얼마를 쓰는지 키 단위로 재고 싶기 때문이다. 반대로 구독 한도가 늘 남아도는 사람이 실험 삼아 돌린다면 setup-token 쪽이 지갑엔 낫다. 결국 정답은 지출 액수가 아니라 격리의 문제다 — 자동화는 자기 지갑을 따로 차는 편이 오래 간다.
이 글에 대한 의견은 아래 댓글로 남겨주세요 (GitHub 계정 필요). 로그인 없이 남기고 싶다면