2026-07-09 · 바이브코딩

AI 블로그 자동화에서 변경 동결 신호를 정하는 법

Futory의 Next.js Markdown 발행 흐름에서 새 글 작성 이후 테스트, 빌드, PM2 재시작, 공개 검증 단계마다 더 이상 파일을 만지지 않는 변경 동결 신호를 세우는 방법을 정리했습니다.

요약

Futory처럼 AI가 평일마다 Markdown 글을 만들고 Next.js 빌드와 PM2 재시작까지 이어 가는 블로그에서는 “언제부터 더 이상 파일을 바꾸지 않을 것인가”를 정해 두는 일이 중요합니다. 글을 생성하는 단계에서는 내용을 다듬을 수 있지만, 테스트를 통과하고 빌드가 시작된 뒤에는 운영 관점의 변경 동결 신호가 필요합니다. 이 신호가 없으면 작은 표현 수정이 빌드 산출물, 공개 검증, 재시도 판단까지 흔들 수 있습니다.

변경 동결은 글을 더 좋게 만들지 말자는 뜻이 아닙니다. 자동화가 한 번의 실행 안에서 안전하게 끝날 수 있도록 원천 파일, 빌드 산출물, 런타임 반영의 경계를 구분하자는 약속입니다. 바이브코딩은 빠른 수정과 흐름을 중시하지만, 공개 블로그 운영에서는 빠르게 멈출 줄 아는 기준도 품질입니다.

변경 동결 신호가 필요한 이유

자동 발행은 사람이 보는 글쓰기와 서버가 처리하는 배포가 한 줄로 이어진 작업입니다. 처음에는 제목, 설명, 태그, 본문을 고치는 것이 자연스럽습니다. 그러나 npm run test:content를 통과하고 npm run build가 시작되면 상황이 달라집니다. 이제 Markdown 파일은 단순 초안이 아니라 빌드 입력값입니다. 이 시점 이후 파일을 다시 바꾸면 앞에서 통과한 검증이 더 이상 현재 상태를 설명하지 못합니다.

검증 결과는 특정 파일 상태에 묶인다

콘텐츠 테스트가 성공했다는 말은 그 순간의 frontmatter와 본문 구조가 규칙을 만족했다는 뜻입니다. 테마 테스트가 성공했다는 말도 같은 입력을 기준으로 레이아웃 규칙을 확인했다는 뜻입니다. 테스트 뒤에 파일을 수정하면 이전 성공 로그는 참고 자료일 뿐, 현재 파일의 보증이 아닙니다. 그래서 자동화는 각 단계가 끝날 때마다 “이 상태를 다음 단계의 입력으로 고정한다”는 신호를 가져야 합니다.

중복 방지도 동결 신호와 연결된다

오늘 날짜 글이 이미 있으면 새 글을 만들지 않는 규칙은 Futory 운영의 핵심 안전장치입니다. 그런데 같은 실행에서 파일을 만들고, 다시 수정하고, 실패 후 또 다른 파일을 만들면 중복 방지가 복잡해집니다. 변경 동결 신호를 두면 오늘의 기준 파일이 하나로 고정됩니다. 실패가 나도 새 글을 다시 쓰는 대신 그 파일과 해당 단계의 로그를 기준으로 문제를 좁힐 수 있습니다.

Futory에 맞는 단계별 동결 기준

Futory의 원천 콘텐츠는 /opt/futory/content/posts 아래 Markdown 파일입니다. 배포는 테스트, 빌드, .next 산출물 확인, PM2 재시작, 공개 URL 검증 순서로 진행됩니다. 이 흐름에서는 각 단계마다 다른 종류의 동결 기준이 필요합니다.

파일 생성 후: 원천 동결 후보

새 Markdown 파일을 만든 직후에는 아직 원천 동결이 확정된 상태가 아닙니다. 이때는 frontmatter 날짜, 카테고리, 태그, 제목 길이, 본문 구조를 빠르게 확인할 수 있습니다. 오탈자나 형식 문제가 있으면 이 단계에서 고치는 것이 가장 안전합니다. 아직 빌드가 시작되지 않았으므로 공개 사이트나 런타임에는 영향이 없습니다.

콘텐츠 테스트 통과 후: 원천 동결

npm run test:contentnpm run test:theme가 성공하면 원천 파일은 동결된 것으로 봅니다. 이후에는 본문을 더 다듬고 싶어도 같은 실행 안에서는 멈추는 편이 좋습니다. 개선 아이디어는 다음 글의 주제나 별도 수동 편집으로 넘기고, 자동화는 현재 검증된 상태를 빌드 입력으로 사용합니다. 이렇게 해야 테스트 결과와 빌드 결과가 같은 파일 상태를 바라봅니다.

빌드 성공 후: 산출물 동결

npm run build가 성공하고 .next 안에서 새 slug가 확인되면 빌드 산출물도 동결된 것으로 봅니다. 이때부터는 파일 수정뿐 아니라 빌드 산출물을 다시 만드는 행동도 조심해야 합니다. PM2 재시작은 이 산출물을 런타임에 반영하는 단계이므로, 산출물 확인이 끝난 뒤에는 공개 검증에 집중해야 합니다. 목록이 늦게 보인다고 해서 곧바로 본문을 수정하거나 새 파일을 만들면 문제 원인이 흐려집니다.

운영 보고에 동결 신호를 남기는 법

변경 동결은 내부 규칙으로만 남기면 효과가 약합니다. 크론 보고서에 어떤 단계에서 파일이 고정되었고, 어떤 산출물이 공개 검증의 기준이 되었는지를 짧게 남겨야 합니다. 예를 들어 content freeze: test:content/test:theme OK, artifact freeze: slug found in .next, runtime check: PM2 restart OK처럼 적으면 다음 실행이나 수동 점검에서 기준점을 바로 찾을 수 있습니다.

실패 보고는 더 중요하다

성공한 날에는 동결 신호가 짧아도 충분합니다. 하지만 실패한 날에는 첫 실패 단계와 그 직전 동결 상태를 함께 남겨야 합니다. 콘텐츠 테스트 실패라면 원천 동결 전 실패입니다. 빌드 실패라면 원천은 동결되었지만 산출물은 아직 없습니다. 공개 URL 실패라면 원천과 산출물은 통과했지만 런타임 또는 캐시 검증에서 멈춘 것입니다. 이 구분이 있어야 불필요한 롤백과 중복 생성을 피할 수 있습니다.

사람의 수정 욕구를 운영 기준으로 다룬다

AI가 쓴 글을 보면 마지막 순간에 더 좋은 문장이 떠오를 수 있습니다. 그러나 반복 발행 자동화에서는 “지금 고치기”보다 “검증 가능한 상태로 끝내기”가 더 중요한 순간이 있습니다. 동결 신호는 창의성을 막는 규칙이 아니라, 창의적인 수정과 운영 배포를 분리하는 기준입니다. 글 품질 개선은 계속하되, 빌드가 시작된 실행 안에서는 입력값을 고정해야 합니다.

자주 묻는 질문

동결 후 오타를 발견하면 어떻게 하나요?

공개 전이고 아직 빌드 전이라면 수정해도 됩니다. 하지만 콘텐츠 테스트와 테마 테스트를 통과한 뒤라면 같은 실행 안에서 수정하지 말고, 수정이 꼭 필요할 때는 테스트부터 다시 실행해야 합니다. 이미 PM2 재시작과 공개 검증까지 끝났다면 별도 수동 수정 또는 다음 자동화 주기로 분리하는 편이 안전합니다.

자동화가 글을 만들었는데 빌드가 실패하면 파일을 삭제해야 하나요?

항상 삭제할 필요는 없습니다. 빌드 실패는 원천 파일이 동결된 뒤 산출물 생성에서 멈춘 상태입니다. 오류가 새 파일의 문법이나 import 충돌 때문이라면 해당 파일을 고치고 테스트부터 다시 시작해야 합니다. 단, 기존 글은 건드리지 않고 오늘 기준 파일 하나를 중심으로 복구해야 중복을 피할 수 있습니다.

목록 페이지가 늦게 반영되면 동결을 풀어야 하나요?

아닙니다. 상세 URL이 정상이고 .next 산출물에 slug가 있다면 원천과 산출물은 이미 기준이 됩니다. 목록 반영 지연은 캐시, 런타임 재시작, 페이지 생성 규칙을 확인할 문제입니다. 이때 본문을 다시 수정하거나 새 slug를 만들면 검증 기준이 바뀌어 원인 추적이 어려워집니다.

결론

AI 블로그 자동화에서 변경 동결 신호는 빠른 글쓰기를 안전한 발행으로 바꾸는 작은 운영 장치입니다. Futory의 Next.js Markdown 흐름에서는 파일 생성 후 형식을 점검하고, 콘텐츠와 테마 테스트가 성공하면 원천 파일을 고정하며, 빌드 산출물에서 slug를 확인한 뒤에는 공개 검증에만 집중하는 순서가 적절합니다.

바이브코딩은 계속 고치는 힘이 있지만, 공개 블로그 자동화에는 멈추는 타이밍도 필요합니다. 오늘의 파일, 테스트 결과, 빌드 산출물, PM2 재시작, 공개 URL이 같은 기준을 바라볼 때 보고는 짧아지고 복구는 쉬워집니다. 변경 동결 신호를 매일의 발행 루틴에 넣으면 Futory 자동화는 더 예측 가능하고, 중복 없이, 운영자가 신뢰할 수 있는 흐름으로 유지됩니다.