스케줄러와 자율 편집자는 같은 물건이 아니다
“원본 Markdown을 가져와서 고치고 공개하면 끝.”
글로 적으면 너무 쉬워 보인다.
그런데 자동화를 시작하면 그 ‘끝’이 끝없이 늘어난다.
Markdown을 읽고, 대상인지 판단하고, 12개 언어가 모두 있는지 확인하고, 이상한 소제목을 지우고, 링크를 검사하고, 공개하고, 실제 페이지를 다시 보고, 실패하면 원인을 찾고, 수정하고, 다시 실행하고, 다른 곳이 망가지지 않았는지 확인해야 한다.
어느 순간 컨베이어 벨트에게 편집장 업무까지 시키고 있다.
문제는 Cloudflare Workers나 예약 작업, GitHub Actions가 형편없어서가 아니다.
잘하는 일이 다르다.
정해진 일을 반복하는 시스템은 강하다. 하지만 매번 다른 글을 읽고 “이번에는 무엇이 이상한가?”를 판단해 고치고 검증하는 일은 단순 스케줄링보다 AI 에이전트에 더 가깝다.
1. 같은 파이프라인이어도 매번 실제 작업은 다르다
콘텐츠 공장은 대량생산처럼 보인다.
입력은 Markdown. 출력은 공개 글.
그러니 같은 처리를 100번 돌리면 될 것 같다.
하지만 문장은 규격화된 나사가 아니다.
A 글은 제목이 이상하다. B 글은 12개 언어 중 하나가 없다. C 글은 번역은 되었지만 현지 검색에서 쓰지 않는 표현이다. D 글은 내부용 SEO 메모가 본문에 섞였다. E 글은 제휴 링크 위치가 기술적으로는 맞지만 글 흐름상 황당하다. F 글은 공개는 성공했는데 완료 기록만 실패했다.
모두 같은 “글 공개” 단계에서 생긴 문제다.
하지만 고치는 방법은 전부 다르다.
입력이 매번 다르면 실패 모양도 매번 달라진다.
2. 예약 실행은 ‘정해진 일을 정해진 때에’ 하는 데 강하다
GitHub Actions는 저장소 이벤트, 수동 실행, 일정 등을 계기로 미리 정의한 작업과 단계를 실행하는 자동화 시스템이다.[1]
ChatGPT Scheduled Tasks도 지정 시간이나 지원되는 이벤트를 계기로 작업을 실행하는 기능이다.[2]
Cloudflare Workers 역시 요청 처리와 예약 실행, 서비스 연결에 강하다.
이런 도구가 잘하는 질문은 명확하다.
“언제 실행할까?” “어떤 스크립트를 돌릴까?” “명령이 성공했나?” “이 조건이면 다음에 무엇을 할까?”
반대로 이런 질문은 어렵다.
“이 제목, 번역투가 심하지 않나?” “내용은 맞는데 독자 입장에서는 이 단락이 필요 없지 않나?” “링크는 유효한데 왜 여기 있지?” “오늘 실패는 어제와 같은 실패인가?”
스케줄러에는 시계가 있다.
하지만 편집자의 ‘뭔가 이상한데’ 감각이 자동으로 따라오지는 않는다.
3. 가장 어려운 것은 PDCA를 끝까지 닫는 일이다
수정 자체보다 어려운 것은 전체 반복을 완결하는 것이다.
실패를 발견한다. 원인을 나눈다. 수정한다. 다시 실행한다. 실제로 고쳐졌는지 확인한다. 부작용이 없는지 확인한다. 틀렸다면 다른 가설로 다시 시도한다.
사람은 자연스럽게 한다.
자동화에서는 단계마다 상태와 조건을 설계해야 한다.
특히 골치 아픈 것은 ‘반쪽 성공’이다.
공개는 됐는데 기록은 계속 실행 중이다.
번역 작업은 끝났는데 한 언어만 비었다.
저장소는 바뀌었는데 실제 사이트 반영은 실패했다.
이때 무조건 재실행하면 중복 공개나 이중 처리가 생길 수 있다.
그래서 중요한 목표는 “절대 실패하지 않기”가 아니라,
다시 실행해도 결과가 망가지지 않기
다.
Cloudflare Workflows 문서도 각 단계를 독립적으로 재시도할 수 있게 만들고, 상태를 저장하며, 재시도되어도 안전한 작업을 설계하는 것을 강조한다.[3][4]
4. Cloudflare에는 복구 도구가 있다. 하지만 편집 판단은 다른 문제다
Cloudflare Workflows는 여러 단계의 긴 작업을 상태와 함께 유지하고, 실패한 단계만 다시 실행하거나 완료된 지점부터 이어갈 수 있다.[3]
Cloudflare Queues는 여러 번 실패한 메시지를 별도의 Dead Letter Queue로 보낼 수 있다.[5]
즉,
일시적인 통신 오류, API 실패, 타임아웃, 반복 실패 메시지, 나중에 이어서 처리해야 하는 작업
은 상당 부분 자동화할 수 있다.
하지만,
“스페인어 문장은 이해되지만 현지 사용자가 검색할 표현은 아니다.”
“본문은 맞지만 이 소제목이 독자 경험을 망친다.”
같은 문제는 재시도 횟수를 늘린다고 해결되지 않는다.
잘못된 결과를 더 성실하게 반복할 뿐이다.
재시도는 판단력을 대신하지 못한다.
5. GitHub Actions는 훌륭한 작업대이지 자율 편집자가 아니다
GitHub Actions는 규칙이 명확한 일에 강하다.
테스트. 파일 검사. 빌드. 조건부 배포. 정해진 시간의 스크립트 실행.
이런 일에는 정말 편하다.[1]
하지만 Actions 자체가 글을 읽고,
“이 글은 제목보다 도입부가 문제다.”
라고 판단하지는 않는다.
Actions에서 AI를 호출할 수는 있다. 하지만 그 순간 핵심 문제는 Actions 설정이 아니라, AI에게 어떤 문맥을 주고 무엇을 바꾸게 하며 어떻게 결과를 검증할지로 이동한다.
전동 공구에게 편집 회의를 맡기고 화내는 것은 조금 억울하다.
6. 100% 자동화보다 정상 경로와 예외 경로를 나누자
콘텐츠 공장은 두 줄로 나누는 편이 현실적이다.
정상 경로: 기계가 처리
명확하게 검사할 수 있는 것은 자동으로 통과시킨다.
- 필수 파일 존재
- 12개 언어 존재
- 빈 필드 없음
- URL 형식 정상
- ID 중복 없음
- 공개 명령 성공
- 실제 URL 응답 확인
이건 Worker, 스크립트, Actions가 잘한다.
예외 경로: 격리하고 다음으로 진행
한 글이 실패해도 전체 공장을 멈추지 않는다.
이유를 기록하고 그 글만 옆으로 뺀다.
예를 들면:
- 번역 누락
- 구조 오류
- 링크 오류
- 공개 오류
- 내용 검토 필요
- 원인 불명
그리고 다음 글로 간다.
100개 중 90개가 자동으로 통과했다면 90개는 내보내면 된다.
이상한 10개 때문에 정상 90개까지 줄 세워 반성문 쓰게 할 필요는 없다.
예외는 빼고 계속 간다.
7. 남은 예외는 저장소를 읽는 AI 에이전트에게 맡긴다
예외는 단순 재시도가 아니라 읽기, 판단, 수정, 검증이 필요한 경우가 많다.
이때 저장소를 직접 읽고 작업할 수 있는 코딩 에이전트가 맞는다.
OpenAI의 Codex Cloud 공식 설명에 따르면 준비된 프로젝트 환경에서 버그 조사, 코드 변경, 테스트 실행 같은 작업을 수행하고, 지원되는 기기에서 같은 클라우드 작업을 이어갈 수 있다.[6]
콘텐츠 공장에서는 이런 식이다.
실패한 글을 가져온다. 원본 Markdown을 읽는다. 생성 결과를 본다. 실패 기록을 본다. 필요하면 관련 코드도 본다. 수정한다. 검사한다. 다시 공개한다. 실제 페이지를 확인한다.
즉, 에이전트는 모든 글을 처리하는 컨베이어 벨트가 아니라,
막힌 글만 고치는 수리 담당
이 된다.
쉬운 일은 기계에게. 이상한 일만 AI에게.
그 편이 비용과 시간도 덜 낭비한다.
8. 같은 예외가 반복되면 그때 자동화로 승격한다
예외 큐를 영원히 AI에게 떠넘기는 것도 좋은 구조는 아니다.
같은 문제가 반복되면 그것은 이제 예외가 아니라 패턴이다.
특정 언어가 자주 빠지면 자동 누락 검사를 추가한다.
특정 소제목이 자주 섞이면 자동으로 차단한다.
공개 후 상태 기록만 자주 실패하면 실제 공개 여부를 확인한 뒤 상태를 복구하는 절차를 만든다.
순서는 이렇다.
먼저 돌린다. 실제 예외를 모은다. 특이한 것은 AI가 고친다. 반복되는 것만 자동 규칙으로 올린다.
처음부터 세상의 모든 실패를 예상해 코딩하려 하면, 공장 건설만 끝없이 계속되고 제품은 하나도 안 나온다.
결론: 스케줄러는 컨베이어 벨트, AI 에이전트는 수리대
Cloudflare, 예약 작업, GitHub Actions에 자율 편집자 역할을 기대하면 답답해질 수 있다.
하지만 역할을 분리하면 훨씬 단순해진다.
스케줄러는 시작하고, 검사하고, 정상 항목을 보내고, 실패 항목을 격리한다.
에이전트는,
“왜 이 글만 이상하지?” “어디를 고쳐야 하지?” “고친 뒤 정말 괜찮아졌나?”
를 맡는다.
쉬운 경로는 자동화한다. 한 예외가 전체를 막지 않게 한다. 예외만 에이전트에게 보낸다. 반복 예외는 나중에 기계 규칙으로 승격한다.
필요했던 것은 모든 것을 생각하는 컨베이어 벨트가 아니었다.
멈추지 않는 컨베이어 벨트와, 떨어진 상자만 똑똑하게 고치는 수리 담당이었다.
- GitHub Docs, Workflows docs.github.com
- OpenAI Help Center, Scheduled tasks in ChatGPT help.openai.com
- Cloudflare Docs, Build your first Workflow developers.cloudflare.com
- Cloudflare Docs, Rules of Workflows developers.cloudflare.com
- Cloudflare Docs, Dead Letter Queues developers.cloudflare.com
- OpenAI Help Center, Using Codex Cloud help.openai.com
