전체 하우투
🛠️
STEP 09

API 비용 내고 계세요? 내 Claude Code 계정으로 API처럼 쓰는 법 (요금 0원)

단점은 딱 하나, API보다 느립니다. 그런데 크론잡·야간배치·초안 생성처럼 아무도 안 기다리는 일에는 상관없죠. 그 일들을 워커로 옮기면 API 비용이 획기적으로 줄거나 0이 됩니다.

지금 API 비용, 내고 계신가요?

내고 계신다면 이 질문 하나만 해보세요. "그 작업, 누가 기다리고 있나요?"

매일 새벽 3시에 도는 크론잡. 밤사이 100건 분류. 아침에 볼 리포트. 고객 답장 초안. — 아무도 안 기다립니다. 그런데 그 일들이 지금 계량기가 도는 API로 처리되고 있습니다.

이 가이드의 결론: 아무도 안 기다리는 일은 전부 내 Claude Code 계정으로 옮길 수 있습니다. 코드에서 API를 부르듯 똑같이 부르는데, 청구서만 사라집니다.

단점은 딱 하나 — 느립니다. API가 몇 초라면 이건 30초~3분. 그런데 크론잡한테 30초가 무슨 의미가 있나요. 새벽 3시에요.

요금이 새는 곳

자동화를 붙이기 시작하면 대부분 API를 씁니다. API는 쓴 만큼 돈이 나가는 계량기입니다. 초안 하나 = 몇십 원, 하루 30건이면 한 달에 눈에 띄는 금액. 게다가 잘 되면 될수록 더 많이 돌리게 되니 요금은 성공에 비례해 늘어납니다.

그런데 이상한 점이 하나 있습니다. 이미 Claude 구독료를 내고 있잖아요. 구독은 정액입니다. 아무리 써도 청구서가 더 커지지 않습니다. 그런데 대부분은 구독을 "내가 앉아서 대화할 때만" 씁니다.

워커는 그 착각을 깹니다. 내가 자리에 없어도 내 구독이 일하게 만드는 방법입니다.

워커 한 줄 정의

워커 = 항상 켜둔 내 컴퓨터에서 조용히 도는 작은 프로그램. 할 일 목록을 계속 확인하다가, 하나 집어서 내 구독으로 로그인된 Claude에게 시키고, 결과를 제자리에 돌려놓습니다.
🌐
사이트 · 큐
"이거 해줘" 적어둠
💻
워커 (내 컴퓨터)
20초마다 확인 · 하나씩
🧠
claude -p
구독으로 실행
계량기 API
몇 초 · 건당 과금
워커 (구독)
30초~3분 · 추가요금 0
급하지 않은 일은 내 컴퓨터가 구독으로 처리 → 건당 요금 없음.

요금이 0이 되는 이유 — 이 한 줄

claude -p "이 주문에 보낼 답장 초안을 써줘" --model opus

-pprint 모드입니다. 대화창을 띄우지 않고 답만 출력하고 끝납니다. 그리고 이건 터미널에서 내 계정으로 로그인된 Claude Code입니다 — API 키를 쓰지 않습니다. 계량기가 돌지 않습니다.

프로그램에서 부르려면 이 한 줄을 그대로 감싸면 됩니다.

// 프롬프트를 표준입력으로 넣고, 나온 글자를 받아온다
import { spawn } from "node:child_process";

function runClaude(prompt, model = "opus", timeoutMs = 240000) {
  return new Promise((resolve, reject) => {
    const cp = spawn("claude", ["-p", "--model", model]);
    let out = "";
    const t = setTimeout(() => { cp.kill("SIGKILL"); reject(new Error("시간초과")); }, timeoutMs);
    cp.stdout.on("data", (d) => { out += d; });
    cp.on("close", (code) => { clearTimeout(t); code === 0 ? resolve(out.trim()) : reject(new Error("실패 " + code)); });
    cp.stdin.write(prompt); cp.stdin.end();
  });
}
💡
무제한은 아닙니다. 구독에도 사용량 한도가 있습니다. 사라지는 건 "한도"가 아니라 건당 청구서입니다. 밤새 수천 건을 돌릴 생각이라면 한도부터 확인하세요.

대신 포기하는 것 — 속도

계량기 API워커(구독)
응답몇 초보통 30초~3분
비용건당 과금추가 요금 없음
필요 조건없음내 컴퓨터가 켜져 있어야 함
실패 시즉시 앎큐에 남았다가 재시도

그래서 판단 기준은 딱 하나입니다.

"지금 이 화면 앞에서 사람이 기다리고 있나?" 기다린다면 API. 안 기다린다면 워커.

워커에 맞는 일 / 안 맞는 일

맞는 일 (거의 다 여기 해당됩니다)

  • 고객 답장·상담 초안 (사람이 검토 후 발송)
  • 블로그·뉴스레터·상세페이지 초안
  • 밤사이 대량 분류·채점·태깅 (공고 100건 점수 매기기 같은 것)
  • 번역, 요약, 리라이트
  • 사진·영상 파일 정리, 대량 리네임
  • 매일 아침 리포트 만들어두기

안 맞는 일

  • 실시간 챗봇, 손님이 화면에서 기다리는 응답
  • 결제·예약처럼 즉답이 곧 매출인 흐름
  • 내 컴퓨터가 꺼져 있는 시간에 반드시 떠야 하는 일 → 이건 [클라우드 실행]으로

구조는 세 조각뿐입니다

1. 할 일 목록(큐) — 사이트가 "이거 해줘"를 적어두는 곳. 표 하나, 또는 파일 하나면 충분합니다.

2. 워커 — 내 컴퓨터에서 그 목록을 20초마다 확인 → 하나 집기 → claude -p 실행 → 결과 쓰기.

3. 보는 화면 — 대기 몇 건, 진행 중, 완료. 로그가 흐르면 마음이 놓입니다.

💡
보안은 여기서 갈립니다. 배포된 웹페이지가 워커에게 명령어 문자열을 보내게 만들면 안 됩니다. 페이지는 작업 "종류"만 요청하고(예: 초안생성), 그 종류가 실제로 무엇을 실행하는지는 워커 안의 목록이 정합니다. 이러면 페이지가 뚫려도 내 컴퓨터에서 아무 명령이나 돌지 않습니다.

만드는 법 — Claude Code에 그대로 붙여넣는 프롬프트

여기가 이 가이드의 핵심입니다. 코드를 짜지 마세요. 아래를 붙여넣고 `___`만 바꾸세요.

1) 워커 만들기 (제일 먼저)

내 맥에서 도는 워커를 만들어줘.
- 20초마다 ___(할 일이 쌓이는 곳: 우리 DB 테이블 / Supabase Storage의 jobs.json / 로컬 폴더)를 확인해서 대기 중인 작업 하나를 가져와.
- 작업 종류는 워커 안의 허용 목록에만 있는 것만 실행해. 목록에 없으면 오류로 처리해.
- 실행은 `claude -p --model opus`에 프롬프트를 표준입력으로 넣는 방식으로 해. API 키는 절대 쓰지 마 — 요금이 나가면 안 돼.
- 진행 상황을 로그로 남기고, 끝나면 결과를 원래 자리에 저장해.
- 한 번에 한 작업만 처리해. 동시에 여러 개 잡지 마.

2) 사이트에서 일 시키는 버튼 붙이기

___ 페이지에 "___(작업 이름)" 버튼을 만들어줘. 누르면 워커 큐에 작업이 하나 쌓이고,
그 작업의 상태(대기·진행중·완료)와 로그가 화면에서 3초마다 갱신되게 해줘.
버튼은 작업 종류만 보내고 실행할 명령은 절대 보내지 않게 해.

3) 항상 켜두기 (재부팅해도 살아나게)

이 워커를 맥에서 항상 돌게 만들어줘. 재부팅해도 자동으로 다시 뜨고,
죽으면 알아서 살아나게. 로그는 파일로 남겨줘. 설치·중지 방법도 알려줘.

4) 새 작업 종류 추가

워커에 "___" 작업을 추가해줘. 이 작업은 ___를 가져와서, ___한 프롬프트로 초안을 만들고,
결과를 ___에 저장해. 발송이나 외부 전송은 절대 하지 말고 초안까지만.

5) 비용 감사 — 지금 어디서 돈이 새는지 찾기 (추천)

이 프로젝트 전체를 훑어서 Anthropic API(계량기)를 호출하는 곳을 전부 찾아줘.
각각에 대해 "사람이 화면 앞에서 기다리는가"를 기준으로 워커로 옮길 수 있는지 판단하고,
옮길 수 있는 것부터 우선순위를 매겨서 목록으로 보여줘. 아직 고치지는 마.
5번을 먼저 돌려보세요. 대부분 "이거 굳이 실시간일 필요 없었네" 하는 항목이 절반은 나옵니다.

워커에게 줄 프롬프트는 다르게 써야 합니다

워커 안의 Claude는 나와 대화하지 않습니다. 한 번 물어보고 한 번 답하고 끝입니다. 그래서:

  • 되묻지 못하게 하세요. "모르면 물어봐"는 금지. 대신 "정보가 부족하면 합리적으로 가정하고 진행하되, 가정한 내용을 맨 아래에 적어라."
  • 필요한 자료를 프롬프트에 다 넣으세요. 워커는 우리 대화 맥락을 모릅니다. 고객 이름, 지난 주문, 톤 예시까지 프롬프트 안에 넣습니다.
  • 출력 형식을 못 박으세요. "마크다운 본문만 출력. 인사말·설명·머리말 금지." 안 그러면 "네, 초안을 작성해 드리겠습니다!" 가 그대로 고객 메일에 실립니다.
  • 한 번 더 돌아도 안전하게. 워커는 실패하면 재시도합니다. "이미 발송했으면 다시 보내지 마" 같은 안전 문장을 넣으세요.
  • 초안까지만. 자동 발송은 마지막에, 며칠 지켜본 뒤에.

제가 실제로 데인 것 5가지

1. 욕심내서 동시에 두 개 돌리지 마세요. 두 작업이 같은 목록 파일을 동시에 고쳐 쓰면 한쪽 "완료"가 지워집니다. 그러면 다 끝난 작업이 화면엔 오류로 뜹니다. 한 번에 하나로 두면 이 문제가 통째로 사라집니다.

2. "완료" 기록은 생각보다 잘 유실됩니다. 일은 성공했는데 그 사실을 저장하다 인터넷이 끊기면, 화면엔 영원히 실패로 남습니다. 저장 실패 시 로컬 파일에 적어두고 될 때까지 다시 보내게 하세요.

3. 워커는 죽지 않고 '멈춥니다'. 프로세스는 살아 있는데 루프만 멈춘 상태 — 자동 재시작 장치가 이걸 못 잡습니다. 루프가 돌 때마다 파일에 시각을 찍고, 그 시각이 오래됐으면 강제 재시작하는 감시자를 따로 두세요.

4. 답변 앞머리 군더더기를 잘라내세요. 모델 태그나 "알겠습니다" 한 줄이 그대로 고객 문서 맨 위에 실립니다. 저장 전에 첫 줄을 정리하세요.

5. 작업 종류 허용 목록은 타협하지 마세요. 편하다고 "명령어 그대로 실행" 한 번 열어주면, 그날부터 내 컴퓨터는 인터넷에 열린 문입니다.

오늘 할 수 있는 가장 작은 시작

1. 위 5번 비용 감사 프롬프트를 Claude Code에 붙여넣습니다.

2. 나온 목록에서 가장 안 급한 것 하나를 고릅니다.

3. 1번 프롬프트로 워커를 만들고, 그 하나만 옮깁니다.

4. 며칠 돌려보고 멀쩡하면 두 번째를 옮깁니다.

요금은 기능을 줄여서 아끼는 게 아닙니다. 급하지 않은 일을 급하지 않게 처리하면 아껴집니다.

다음: 2026년 가장 중요한 능력 — 상상력.

📖 쉬운 용어 사전

어려운 말은 없습니다. 헷갈리면 여기를 보세요.

Claude Code자연어로 말하면 코드·파일·배포까지 해주는 AI 도구
호스팅 (Hosting)만든 사이트를 인터넷에 올려 주소를 주는 것 (예: Vercel)
데이터베이스 (Database)정보를 저장하고 기억하는 곳 (예: Supabase)
배포 (Deploy)만든 걸 실제 인터넷에 띄워 사람들이 쓰게 하는 것
API다른 서비스의 기능을 내 사이트에서 가져다 쓰는 연결 통로
API 키 (Key)그 API를 쓸 수 있게 해주는 비밀 열쇠
SaaS구독형 소프트웨어 — 설치 없이 인터넷으로 쓰는 서비스
크론 (Cron)정해진 시각마다 자동으로 작업을 실행하는 예약 기능
에이전트 (Agent)목표를 주면 스스로 판단·도구사용·반복해 끝내는 AI
환경변수 (Env)API 키 같은 비밀값을 코드에 노출 않고 안전히 보관하는 곳
DNS도메인 주소를 실제 서버로 연결해주는 인터넷 전화번호부
프레임워크 (Framework)웹사이트를 빠르게 만들게 도와주는 기본 뼈대 (예: Next.js)
막히면 같이 풀어요

울산 AI 커뮤니티는 누구나 환영합니다.

지금 합류하기