Claude Code만으로, 잠자는 동안 작동하는 AI 부하를 만든 이야기 — 공식 문서 차이점을 매일 아침 Slack에 전송
요약
Claude Code의 'routine' 기능을 활용하여 별도의 서버 없이도 지정된 시간에 AI 기반 자동화 부하를 구축하는 방법을 설명합니다. 이 시스템은 매일 공식 문서의 변경 사항을 감지하고, 요약하여 Slack에 게시하며, 필요시 초안 기사까지 작성해 GitHub에 푸시할 수 있습니다.
핵심 포인트
- Claude Code routine으로 클라우드 기반 자동화 에이전트 구축 가능
- 로컬 환경 접근 불가: 지정된 리포지토리만 사용 가능
- 핵심 설계 원칙: 차이점 감지는 Python, 판단과 글쓰기는 모델에게 위임
- AI 부하는 초안까지만 작성하고 사람이 최종 검증 및 공개 필요
Claude Code에는 클라우드에서 cron 실행되는 에이전트(routine)가 포함되어 있습니다. 노트북 PC를 닫아 놓았더라도 지정된 시간에 Anthropic 측의 샌드박스에서 세션이 시작되고, 리포지토리를 clone한 후 Slack이나 Gmail에 내용을 작성하고 종료합니다. 추가적인 서버나 새로운 도구가 필요하지 않습니다.
본 기사는 이를 이용하여 '매일 아침 9시에 공식 문서 12 페이지의 차이점을 읽고, 요약하여 Slack에 게시하며, 책이나 기사에 영향을 주면 Zenn 기사 초안까지 GitHub에 push하는' AI 부하를 만든 기록입니다. 만드는 이유는 간단합니다. 저는 Claude API 관련 책을 쓰고 있었는데, Haiku 5.5가 출시된 것을 5일 동안 인지하지 못했기 때문입니다. 감시 스크립트는 제 Mac에서 매일 아침 작동하고 있었지만, 알림을 읽는 사람(그리고 Claude의 세션)이 없었습니다.
이는 2026년 10월 16일자 사양입니다. routine은 아직 변화가 빠른 기능이므로, 절차는 공식 문서를 확인해 주십시오.
routine이란 무엇인가
- 5 필드의 cron(UTC) 또는 일회성 날짜/시간으로 클라우드 세션을 발생시킵니다.
최소 간격은 1시간입니다. - 세션은 지정된 GitHub 리포지토리를 clone한 상태로 시작됩니다. 로컬 파일, 로컬 환경 변수, 로컬 서비스에는
접근할 수 없습니다. - claude.ai에서 연결한 MCP 커넥터(Slack, Gmail 등)는 사용할 수 있습니다. Claude Code 측에서 설정한 MCP 서버는 사용할 수 없습니다. - 모델, 사용 가능한 도구, 프롬프트를 하나의 JSON으로 지정합니다. 프롬프트는 매번 처음부터 읽히므로,
그것만으로 완결되어야 합니다. - 생성/업데이트/수동 실행/실행 로그 가져오기는 API(Claude Code 내부의RemoteTrigger)
로 가능합니다. 삭제만은 웹(claude.ai/code/routines)에서 가능합니다.
만든 것
volvox-ltd/claude-docs-watch (비공개 리포지토리)
├── pages.json # 감시할 12 페이지 (platform.claude.com의 .md 버전)
├── watch.py # 가져오기 → state/와 비교 → diffs/<날짜>/와 result.json (표준 라이브러리만 사용)
...
차이점 감지는 Python에 맡기고, 판단과 글쓰기만 모델에게 시키는 것이 설계의 핵심입니다.
5번째가 핵심입니다. AI 부하는 초안까지만 만들고, 공개는 하지 않습니다. Zenn은 '작성자가 공개 전에 검증하고 있다는 것'을 요구하기 때문에, 초안 끝에 '직접 확인한 내용' 빈칸을 남겨두고 사람이 실제 API로 확인하여 채운 후에 공개합니다. routine에 '테스트했다는 글을 쓰지 말라'고 명시한 것도 그 때문입니다.
직접 확인한 내용
2026년 10월 16일에 2번, 수동으로 실행했습니다.
1차 (23초, 8턴). 사내 저장소 확보 → clone → watch.py
(12 페이지, 변경 없음) → 로그 추가 → push(성공) → Slack 게시 → channel_not_found. 에이전트는 채널 검색에서도 찾을 수 없다고 판단하고, 대신 스마트폰으로 푸시 알림을 보내고 종료했습니다. 원인은 claude.ai의 Slack 커넥터가
다른 워크스페이스에 연결되어 있었기 때문입니다. 다시 연결하여 채널 ID를 매뉴얼에 적었습니다.
2차 (51초, 9턴). Slack 게시에는 성공했습니다. 그런데 push가 거부되었습니다. 클라우드 측의 checkout이 1차보다 이전 상태였고, 1차 커밋을 알지 못했기 때문입니다. 에이전트는 git pull --rebase
를 실행하고, 자신의 커밋이 같은 줄의 중복임을 확인하여 버렸습니다.
적절한 판단이지만, 매번 발생하지 않도록 매뉴얼 맨 앞에 git pull --rebase
를 추가했습니다.
실행 로그는 API로 가져올 수 있습니다. 툴 호출, 오류, 최종 출력까지 시간순으로 나열되므로, '잠자는 동안 무엇을 했는지'를 나중에 모두 읽어볼 수 있습니다.
막혔던 3가지 지점
- GitHub App은 조직 단위로 등록해야 합니다. claude.ai에서 GitHub를 단순히 '연결'하는 것만으로는 조직(volvox-ltd)의 비공개 리포지토리에 접근할 수 없어,
repo_access_denied
으로 등록이 멈췄습니다. github.com/apps/claude를 조직에 설치하고, 리포지토리를 허용한 후에야 통과했습니다. - Slack 커넥터의 연결 대상. 커넥터는 하나의 워크스페이스에만 연결됩니다. 여러 워크스페이스를 사용한다면 의도하지 않은 곳에 연결되어 있을 수 있습니다. 채널은 이름이 아니라 ID로 지정하는 것이 더 확실했습니다. - checkout은 매번 깨끗한 상태가 아닙니다. 'fresh clone'이라고 썼지만, 실제로는 이전 checkout이 재사용되는 경우가 있습니다. push하는 routine은 처음에 pull 하는 것이 안전합니다.
비용과 제약
- routine 실행은 Claude의 정액 플랜(Max / Team) 사용량 내에서 작동하며, 제 환경에서는 추가 API 청구가 발생하지 않았습니다. 1회당 소비는 이번 규모(차이점 없음)로 수천 토큰입니다. 플랜별 취급은 공식 요금 페이지에서 확인해 주세요.
- 최소 간격 1시간. '5분마다 감시' 용도로는 사용할 수 없습니다.
- 로컬 Mac에는 접근할 수 없으므로, 직접 파일에 의존하는 작업은 먼저 리포지토리에 올려야 합니다.
- 삭제는 웹에서만 가능합니다. API로 만든 것은 API로는 지울 수 없습니다.
같은 작업을 하는 3가지 방법
| Claude Code routine | Managed Agents | launchd / cron + API |
|---|---|---|
| 작동하는 장소 | Anthropic의 클라우드 | Anthropic의 클라우드 |
| ... | ||
| 저는 세 가지 모두 사용하고 있습니다. 이 글의 모니터링은 routine을, 실제 에이전트 기반으로는 Managed Agents(다른 책에 썼습니다)를, Search Console 주간 보고서처럼 직접 인증 정보가 필요한 것은 launchd를 사용합니다. |
요약
- Claude Code의 routine으로 리포지토리를 clone하여 Slack에 글을 쓰는 에이전트가 cron으로 작동한다.
- 차이점 감지는 Python, 판단과 문장은 모델, 공개는 사람처럼 역할을 분담하면 저렴하고 빠르며 신뢰할 수 있다.
- 막히는 부분은 권한과 연결 대상이며, 프롬프트 문제가 아니다.
Managed Agents로 서버 없이 같은 것을 구성하는 방법은 Zenn의 책 『Claude Managed Agents 실전 가이드』에 쓰여 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기