한 번 잘 시켜본 일을, 매번 다시 시키지 않는 법. 명령 한 줄을 정해진 시각에 무인으로 돌리고, 여러 단계를 한 흐름으로 엮고, 끝나면 알림으로 알려주게 만든다. 여기서부터 에이전트는 ‘부르면 오는 도우미’에서 ‘알아서 도는 직원’이 된다.
Lesson 49
기초 자동화 — 한 번 시킨 일을 다시 안 시키기
어제 에이전트에게 “이번 주 매출 csv 세 개 합쳐서 요약해줘”라고 시켰다. 오늘 또 시킨다. 내일도 시킨다. 자동화는 이 ‘또’를 없애는 일이다.
자동화의 출발점은 거창한 기술이 아니라 한 가지 자각이다. 내가 같은 부탁을 두 번 이상 했다면, 그건 이미 자동화 후보다.
지금까지 우리는 에이전트를 ‘부를 때마다’ 썼다. 폴더를 열고, 프롬프트를 붙여넣고, 결과를 확인했다. 손맛은 좋지만 매번 사람이 방아쇠를 당겨야 한다.
자동화는 이 방아쇠를 사람 손에서 떼어내는 작업이다. 단계는 셋뿐이다. 먼저 반복되는 일을 한 문장으로 고정하고, 다음으로 그 일을 한 줄 명령으로 만들고, 마지막으로 그 명령을 사람 대신 무언가가 눌러주게 한다. 이번 레슨은 첫 두 단계, 다음 레슨이 마지막 단계다.
먼저 ‘반복’을 찾아낸다
자동화하기 좋은 일에는 공통점이 있다. 정해진 입력이 들어오고, 매번 같은 처리를 거쳐, 정해진 형태로 나온다. 주간 보고서, 폴더 정리, 로그 요약, 백업 같은 것들이다.
반대로 매번 판단이 갈리고 사람의 취향이 끼어드는 일은 자동화에 어울리지 않는다. 자동화는 ‘생각’이 아니라 ‘반복’을 덜어주는 도구다.
그림 1. 자동화의 기본 흐름. 수집 → 분석 → 리포트 → 알림이 사람 손 없이 한 줄로 이어진다.
반복을 한 줄 명령으로 굳힌다
클로드 코드에서는 자주 쓰는 부탁을 명령처럼 저장해 둘 수 있다. 매번 긴 프롬프트를 붙여넣는 대신, 짧은 이름 하나로 같은 일을 부른다.
가장 단순한 형태는 평소 쓰던 프롬프트를 그대로 한 줄로 실행하는 것이다. 헤드리스(headless) 모드라고 부르는데, 화면 없이 명령만 던지고 결과만 받는 방식이다.
terminal — 주간 매출 요약
# 평소 붙여넣던 부탁을 명령 한 줄로$ claude -p "sales 폴더의 이번 주 csv를 합쳐 요약_주간.xlsx로 저장해줘"# 화면 없이 결과만 흐른다✓ sales_w24-1.csv, w24-2.csv, w24-3.csv 읽음
✓ 주문번호 중복 8건 제거, 주차 기준 합산
✓요약_주간.xlsx 저장 완료
여기서 핵심은 -p 한 글자가 아니다. 한 번 잘 다듬은 부탁을, 사람이 다시 타이핑하지 않고 그대로 재사용한다는 발상이다. 이 한 줄이 곧 다음 레슨에서 스케줄에 걸 ‘방아쇠’가 된다.
먼저 손으로 한 번 성공시켜라
자동화는 ‘이미 손으로 한 번 성공한 일’만 걸어야 한다. 한 번도 제대로 돌아간 적 없는 일을 무인으로 돌리면, 실패도 무인으로 쌓인다. 11모듈까지 손으로 익힌 작업을 자동화 후보로 삼자.
한 문장 요약
같은 부탁을 두 번 했다면, 그건 이미 자동화 후보다.
자동화는 새 기술을 배우는 게 아니라, 이미 잘 시킨 일에서 사람의 방아쇠를 떼어내는 일이다. 그 첫 단추가 ‘반복되는 부탁을 한 줄 명령으로 굳히기’다.
Lesson 50
크론·스케줄로 정기 실행
한 줄 명령을 만들었으면, 이제 그 명령을 매일 아침 8시에 사람 대신 눌러줄 ‘알람시계’를 단다. 그 알람시계의 이름이 크론(cron)이다.
크론은 “정해진 시각이 되면 이 명령을 대신 실행해 달라”고 컴퓨터에게 맡겨두는 장치다. 한 번 걸어두면 노트북이 켜져 있는 한 묵묵히 돈다.
크론을 쓰는 법은 의외로 단순하다. 언제(시각)와 무엇(명령)을 한 줄에 적어 등록하는 게 전부다. 어려운 건 ‘언제’를 적는 표기법인데, 다섯 칸짜리 시간표라고 생각하면 된다.
그림 2. 크론의 다섯 칸. 분·시·일·월·요일을 채우면 정해진 시각에 명령이 무인으로 깨어난다.
다섯 칸 시간표 읽는 법
크론 한 줄은 시각을 가리키는 다섯 칸과 그 뒤에 붙는 명령으로 이루어진다. 칸은 왼쪽부터 분, 시, 일, 월, 요일 순서다. *는 “매번”을 뜻한다.
crontab — 시간표 한 줄
# ┌── 분(0-59)
# │ ┌── 시(0-23)
# │ │ ┌── 일(1-31)
# │ │ │ ┌── 월(1-12)
# │ │ │ │ ┌── 요일(0-6, 0=일)
# │ │ │ │ │
0 8 * * * # 매일 아침 8시 0분
30 18 * * 5 # 매주 금요일 저녁 6시 30분
0 9 1 * * # 매월 1일 아침 9시
이제 시각 뒤에 우리가 만든 명령을 붙이면 끝이다. 아래는 “매일 아침 8시에 주간 매출 요약을 돌려라”를 한 줄로 등록하는 모습이다.
terminal — 스케줄 등록
$ crontab -e # 내 시간표 편집기 열기# 매일 아침 8시, 주간 매출 요약을 무인 실행
0 8 * * * cd ~/work && claude -p "주간 매출 요약을 갱신해줘" >> ~/logs/sales.log 2>&1
로그를 꼭 남겨라. 무인 실행은 아무도 안 본다. >> 로그파일로 결과를 적어두지 않으면, 잘 돌았는지조차 알 수 없다.
절대 경로로 적어라. 크론은 사람이 열어둔 폴더를 모른다. cd ~/work처럼 작업 위치를 명령 안에서 직접 짚어줘야 한다.
처음엔 촘촘하게 시험하라. 매일 8시 대신 “2분 뒤”로 한 번 걸어 제대로 도는지 본 다음, 진짜 시각으로 바꾼다.
붙여넣기 프롬프트 · 크론 한 줄 만들어달라기
아래 작업을 매일 정해진 시각에 무인 실행하는 crontab 한 줄을 만들어줘.
- 작업: (여기에 한 줄 명령을 적는다)
- 시각: 매일 아침 8시
- 작업 폴더: ~/work
- 결과는 ~/logs/ 아래 로그 파일에 누적으로 남겨줘 (표준출력+에러 모두)
- 등록 전에, 이 한 줄이 무엇을 언제 실행하는지 한국어로 풀어서 먼저 설명해줘
지금 시각에서 2분 뒤로 크론을 등록한다(예: 지금이 14:10이면 12 14 * * *).
2분을 기다린 뒤, 그 파일이 새로 생겼는지 확인한다.
확인했으면 crontab -e로 다시 열어 그 줄을 지운다.
목표: ‘내가 안 눌렀는데 컴퓨터가 알아서 실행했다’는 감각을 한 번 체험하는 것. 시각·로그·삭제까지 한 바퀴 돌아보면 크론이 더 이상 무섭지 않다.
맥·리눅스 / 윈도우
크론은 맥과 리눅스의 기본 도구다. 윈도우라면 같은 일을 ‘작업 스케줄러(Task Scheduler)’가 맡는다. 표기법은 달라도 “정해진 시각에 명령을 대신 실행한다”는 원리는 똑같다. 막히면 에이전트에게 “내 OS에 맞는 스케줄 등록법으로 바꿔줘”라고 부탁하면 된다.
한 문장 요약
크론은 ‘언제’와 ‘무엇’을 한 줄에 적어두는 알람시계다.
다섯 칸으로 시각을 정하고 뒤에 명령을 붙이면, 노트북이 켜진 한 그 명령이 정해진 시각마다 무인으로 깨어난다. 로그와 절대 경로만 잊지 않으면 된다.
Lesson 51
백그라운드 실행과 알림
무인 실행에는 두 가지 불편이 따라온다. 오래 걸리는 일이 내 터미널을 붙잡고 있는 것, 그리고 다 끝났는지 내가 계속 들여다봐야 하는 것. 백그라운드와 알림이 이 둘을 푼다.
긴 작업을 시켜놓고 터미널 앞에 묶여 기다리는 건 자동화의 정신에 어긋난다. 일은 뒤에서 돌게 하고, 사람은 다른 일을 하면 된다.
뒤에서 돌게 하기 — 백그라운드
명령 끝에 & 하나만 붙이면, 그 명령은 화면을 점유하지 않고 뒤에서 조용히 돈다. 터미널을 닫아도 계속 돌게 하려면 nohup을 앞에 둔다.
terminal — 백그라운드로 돌리기
# 터미널을 닫아도 뒤에서 계속 도는 긴 작업$ nohup claude -p "지난달 로그 전체를 분석해 리포트로 만들어줘" >> ~/logs/report.log 2>&1 &
[1] 48213 # 작업번호 — 이 번호로 상태를 확인한다$ jobs # 지금 뒤에서 도는 작업 목록
[1]+ Running nohup claude -p ... &
끝나면 알려주게 하기 — 알림
뒤에서 도는 일은 끝나도 티가 안 난다. 그래서 작업의 마지막 단계에 ‘알림 보내기’를 끼워 넣는다. 데스크톱 알림, 메일, 슬랙·텔레그램 메시지 무엇이든 좋다.
가장 쉬운 방법은 에이전트에게 작업의 한 단계로 알림까지 맡기는 것이다. “끝나면 슬랙으로 한 줄 보고해줘”라고 부탁하면, 결과 요약을 알림으로 쏘는 것까지가 한 작업이 된다.
붙여넣기 프롬프트 · 끝나면 알림까지
아래 작업을 끝까지 처리한 뒤, 마지막에 결과를 알림으로 보내줘.
- 작업: (여기에 명령을 적는다)
- 알림 채널: 슬랙 #자동화-알림 (또는 내 메일)
- 알림 내용: 성공/실패 여부 + 한 줄 요약 + 만든 파일 경로
- 실패했으면 어디서 멈췄는지 에러 메시지를 함께 보내줘
무인 작업에서 진짜 위험은 ‘조용한 실패’다. 잘 됐을 때 알림은 없어도 그만이지만, 실패는 반드시 알림이 와야 한다. “실패했을 때만, 어디서 왜 멈췄는지 알려줘”를 기본값으로 삼자.
실습 50
뒤에서 돌고, 끝나면 알리기
30초쯤 걸리는 가벼운 작업을 하나 정한다(예: “이 폴더의 모든 텍스트 파일 글자 수를 세어 표로 만들어줘”).
이 작업을 백그라운드로 돌리고, jobs로 도는 중인지 확인한다.
작업 끝에 “완료되면 데스크톱 알림(또는 메일)으로 한 줄 보고” 단계를 붙인다.
다른 창에서 딴짓을 하다가, 알림이 오는지 기다린다.
목표: ‘시켜놓고 잊어버려도 되는’ 상태를 처음 만들어보는 것. 알림이 한 번 오면, 그 뒤로는 터미널을 지켜볼 필요가 없어진다.
한 문장 요약
일은 뒤에서 돌게 하고, 끝나면 알림이 나를 부르게 한다.
백그라운드가 사람을 터미널에서 풀어주고, 알림이 사람을 다시 부른다. 특히 실패 알림은 무인 자동화의 안전벨트다 — 조용한 실패만 막아도 절반은 성공이다.
Lesson 52
자동화 파이프라인 엮기
지금까지는 명령 하나를 자동으로 돌렸다. 진짜 업무는 보통 여러 단계다 — 자료를 모으고, 분석하고, 리포트를 쓰고, 알린다. 이 단계들을 한 줄기로 잇는 것이 파이프라인이다.
파이프라인은 ‘앞 단계의 결과가 뒷 단계의 입력이 되는’ 연결이다. 컨베이어 벨트처럼, 한쪽에 원료를 넣으면 반대쪽으로 완성품이 나온다.
왜 굳이 엮을까. 단계를 따로 돌리면 사람이 중간에서 결과를 옮겨줘야 한다. 엮어두면 그 중간 손길까지 사라진다. 수집부터 알림까지 한 번의 방아쇠로 끝까지 흐른다.
네 단계로 보는 표준 파이프라인
수집흩어진 원료를 한곳에 모은다. 폴더의 csv, 메일함, 외부 API에서 데이터를 끌어온다.
분석모은 데이터를 처리한다. 합산·필터·요약·이상치 탐지처럼 ‘판단’이 들어가는 핵심 단계다.
리포트결과를 사람이 읽을 형태로 빚는다. 표·요약문·차트가 들어간 문서로 떨군다.
알림완성된 리포트를 사람에게 전달한다. 메일·슬랙으로 보내고, 실패 시 경고를 띄운다.
이 네 단계가 곧 그림 1의 흐름이다. 핵심은 단계 사이의 연결 지점을 명확히 정하는 것이다. 앞 단계가 어떤 파일을 어디에 남기고, 뒷 단계가 그걸 어디서 집어 드는지를 못 박아야 한다.
한 덩어리 vs 여러 단계
파이프라인을 짜는 방법은 둘이다. 에이전트에게 네 단계를 한 부탁으로 맡기는 방식(간단하지만 중간 점검이 어렵다)과, 단계마다 따로 명령을 두고 순서대로 잇는 방식(손은 더 가지만 어디서 깨졌는지 보인다)이다. 처음엔 한 덩어리로 시작해, 자주 깨지는 단계가 보이면 그 단계만 떼어낸다.
중간이 깨져도 무너지지 않게
단계가 길어질수록 중간에서 깨질 확률도 커진다. 수집은 됐는데 분석에서 멈추는 식이다. 그래서 파이프라인에는 두 가지 안전장치를 넣는다.
중간 산출물을 남긴다. 각 단계의 결과를 파일로 떨궈두면, 분석에서 깨져도 이미 모은 데이터는 살아 있다. 처음부터 다시 안 해도 된다.
단계마다 점검을 둔다. “수집한 행이 0개면 멈추고 알려줘”처럼, 다음 단계로 넘어가기 전 최소 조건을 확인하게 한다. 빈 데이터로 엉뚱한 리포트를 만드는 사고를 막는다.
실습 51
2단계 미니 파이프라인
연습 폴더에 csv 두세 개를 둔다(수집할 ‘원료’).
1단계: “csv를 모두 합쳐 merged.csv로 저장” — 중간 산출물을 파일로 남긴다.
2단계: “merged.csv를 읽어 핵심 지표 3개를 요약문으로 만들어줘”.
일부러 csv 하나를 빈 파일로 바꿔 다시 돌려보고, 점검 단계가 멈춰주는지 본다.
목표: ‘앞 결과 → 뒤 입력’이라는 연결을 직접 만들어보고, 중간 산출물 덕에 한 단계가 깨져도 전부 날아가지 않는다는 걸 확인하는 것.
한 문장 요약
파이프라인은 단계를 잇는 게 아니라, 단계 사이의 사람 손을 없애는 것이다.
수집→분석→리포트→알림을 한 줄기로 엮으면 중간 옮김질이 사라진다. 대신 연결 지점을 못 박고, 중간 산출물과 점검을 둬서 ‘한 단계가 깨져도 전부 무너지지 않게’ 만든다.
Lesson 53
워크플로우 패키징
잘 도는 파이프라인을 나 혼자 머릿속에만 두면, 내가 자리를 비우는 순간 멈춘다. 패키징은 이 흐름을 ‘누가 봐도 다시 돌릴 수 있는 한 덩어리’로 포장하는 일이다.
자동화의 마지막 위험은 기술이 아니라 사람이다. 만든 사람만 아는 자동화는, 그 사람이 떠나면 아무도 손대지 못하는 검은 상자가 된다.
패키징은 이 검은 상자를 열어 라벨을 붙이는 일이다. 무엇을 하는지, 어떻게 돌리는지, 무엇이 필요한지를 흐름과 같은 자리에 묶어둔다.
한 덩어리에 들어가야 할 것
실행 명령. 이 자동화를 다시 돌리는 단 하나의 명령. 슬래시 커맨드나 스크립트 한 줄로 정리한다(8·9모듈의 커스텀 명령을 떠올리면 된다).
설명서. 무엇을 입력으로 받고, 무엇을 출력하며, 언제 도는지를 짧은 글로. 클로드에게 맡긴다면 CLAUDE.md나 명령 정의 안에 적어둔다.
필요한 것들. 어떤 폴더·키·권한이 있어야 도는지. 이게 빠지면 다른 컴퓨터에서 바로 깨진다.
클로드 코드라면 이 셋을 슬래시 커맨드 한 개로 묶을 수 있다. 자주 돌리는 파이프라인을 /주간리포트 같은 이름의 명령으로 저장해두면, 흐름 전체가 한 단어로 호출된다.
붙여넣기 프롬프트 · 파이프라인을 명령으로 패키징
방금 함께 만든 이 파이프라인을, 다음에 한 단어로 다시 돌릴 수 있게 슬래시 커맨드로 묶어줘.
- 명령 이름: /주간리포트
- 안에 들어갈 단계: 수집 → 분석 → 리포트 → 알림 (위에서 정한 그대로)
- 명령 설명 맨 위에: 무엇을/언제/무엇이 필요한지 3줄로 적어줘
- 필요한 폴더·권한이 없으면 실행 전에 먼저 알려주고 멈춰줘