2026-07-08 · 바이브코딩

AI 블로그 자동화에서 검증 패킷을 남기는 법

Futory의 Next.js Markdown 발행 흐름에서 새 글, 빌드 산출물, PM2 재시작, 공개 URL 확인을 하나의 검증 패킷으로 묶어 재시도와 운영 판단을 쉽게 만드는 방법을 정리했습니다.

요약

Futory처럼 AI가 평일마다 Markdown 글을 만들고 Next.js 빌드, PM2 재시작, 공개 URL 확인까지 이어 가는 블로그에서는 결과를 “성공했습니다” 한 문장으로 끝내기보다 작은 검증 패킷으로 남기는 편이 안전합니다. 검증 패킷은 새로 만든 파일, 제목, 날짜, slug, 백업 경로, 테스트 결과, 빌드 결과, 공개 상세 URL, 목록 반영 여부를 한 묶음으로 정리한 운영 증거입니다.

바이브코딩은 빠른 흐름을 장점으로 삼지만, 반복 발행에서는 빠른 만큼 다음 사람이 바로 이해할 수 있는 흔적이 필요합니다. 특히 크론이 여러 시간에 실행되고, 선택된 시간에만 발행하며, 이미 오늘 글이 있으면 중복을 막는 구조에서는 “오늘 무엇이 기준점인가”를 분명히 남겨야 합니다. 검증 패킷은 이 기준점을 짧고 재사용 가능한 형태로 만드는 방법입니다.

검증 패킷이 필요한 이유

자동화는 사람의 수고를 줄이지만 판단까지 완전히 없애지는 않습니다. 글 생성은 성공했지만 빌드가 실패할 수 있고, 빌드는 성공했지만 .next 산출물에서 slug를 찾지 못할 수도 있습니다. PM2 재시작이 성공해도 공개 목록이 캐시 때문에 늦게 보일 수 있습니다. 이런 상황에서 단계별 증거가 없으면 운영자는 같은 명령을 다시 실행하거나, 더 나쁘게는 오늘 글을 하나 더 만들 위험이 있습니다.

성공 보고도 운영 데이터다

성공한 날의 보고는 단순한 완료 알림이 아닙니다. 다음 날 중복 검사나 장애 분석에서 비교할 기준이 됩니다. 예를 들어 ai-blog-verification-packet-routine이라는 slug가 파일 경로와 공개 URL에 함께 남아 있으면, 나중에 목록에서 글이 안 보일 때 파일 문제인지 배포 문제인지 빠르게 구분할 수 있습니다. 성공 보고가 자세할수록 실패한 날의 추적 비용은 줄어듭니다.

재시도는 기준점이 있어야 안전하다

크론 기반 발행은 같은 날 여러 번 실행될 수 있습니다. 오늘 날짜 frontmatter가 이미 있으면 새 글을 만들지 않는 규칙이 있어도, 운영자가 수동으로 재시도할 때는 왜 멈췄는지 알아야 합니다. 검증 패킷에 duplicate-check, content-test, next-build, public-detail 같은 결과가 남아 있으면 재시도는 처음부터 다시 쓰기가 아니라 실패한 경계부터 확인하는 방식으로 바뀝니다.

Futory에 맞는 패킷 구성

Futory의 콘텐츠 원천은 /opt/futory/content/posts 아래 Markdown 파일입니다. 따라서 검증 패킷의 첫 줄은 언제나 원천 파일에서 시작해야 합니다. 그다음 테스트와 빌드, 런타임 반영, 공개 검증을 이어 붙이면 전체 발행 흐름을 한눈에 볼 수 있습니다.

원천 파일 정보

원천 파일 정보에는 제목, 날짜, slug, 파일 경로가 들어갑니다. 날짜는 frontmatter의 date: "YYYY-MM-DD" 값을 기준으로 삼고, slug는 공개 경로 /posts/<slug>와 연결합니다. 제목은 사람이 빠르게 이해하기 위한 값이고, 파일 경로는 자동화가 다시 읽거나 비교할 수 있는 값입니다. 이 네 가지가 함께 있어야 “오늘의 글”이 명확해집니다.

변경 전 백업 정보

새 글을 쓰기 전 만든 백업 경로도 패킷에 포함해야 합니다. 백업은 매번 복원하라는 뜻이 아니라, 문제가 생겼을 때 원천 content tree를 되돌릴 수 있다는 보증입니다. 백업 경로가 보고에 없으면 실제로 백업이 있었는지, 어느 시점의 백업인지 확인하기 어렵습니다. 작은 정보지만 운영 신뢰도를 크게 높입니다.

검증 단계 정보

검증 단계는 길게 설명하기보다 상태 중심으로 남기는 편이 좋습니다. test:content OK, test:theme OK, build OK, artifact-check OK, pm2-restart OK, public-detail 200, public-listing OK처럼 짧은 라벨과 결과를 나란히 적으면 충분합니다. 실패한 경우에는 첫 실패 단계의 명령과 오류를 남기고, 뒤 단계는 실행하지 않았다고 표시해야 합니다. 그래야 실패 이후의 상태를 과장하지 않습니다.

패킷을 만들 때의 실무 원칙

검증 패킷은 문서 양식을 만드는 일이 아니라 매일 반복 가능한 운영 습관입니다. 너무 많은 항목을 넣으면 읽기 어렵고, 너무 적으면 재시도에 도움이 되지 않습니다. Futory에서는 “파일, 백업, 테스트, 빌드, 산출물, 재시작, 공개 상세, 공개 목록” 정도가 적당합니다.

캐시 우회 결과를 따로 본다

공개 검증에서는 상세 페이지와 목록 페이지를 구분해야 합니다. 상세 URL이 200을 반환하면 글 자체는 배포된 것입니다. 홈이나 /posts 목록에서 slug나 날짜가 보이지 않는다면 목록 생성, 캐시, 런타임 반영 문제일 수 있습니다. 이 둘을 같은 성공/실패로 묶으면 원인을 놓치기 쉽습니다. 그래서 패킷에는 상세와 목록을 별도 줄로 남기는 것이 좋습니다.

사람이 읽는 문장과 기계가 읽는 값 사이를 맞춘다

보고는 한국어로 간결하게 쓰되, slug와 경로, 명령 이름은 그대로 남기는 편이 좋습니다. 사람은 제목과 상태를 보고 이해하고, 자동화나 운영자는 slug와 경로를 기준으로 다시 확인할 수 있습니다. 바이브코딩 운영에서 좋은 보고는 감성적인 설명보다 다음 행동을 줄여 주는 정확한 단서입니다.

자주 묻는 질문

검증 패킷을 별도 파일로 저장해야 하나요?

반드시 그럴 필요는 없습니다. 크론 보고서에 남는 것만으로도 충분한 경우가 많습니다. 다만 장기적으로 장애 패턴을 분석하고 싶다면 날짜, slug, 실패 단계, 공개 URL 상태를 별도 로그로 모을 수 있습니다. 처음에는 최종 보고에 같은 순서로 남기는 습관부터 만드는 것이 좋습니다.

목록 페이지에 바로 안 보이면 발행 실패인가요?

항상 그렇지는 않습니다. 상세 URL이 200이고 글 내용이 보인다면 글은 공개된 상태일 가능성이 큽니다. 목록만 늦는다면 캐시 우회 요청을 다시 보내거나, PM2 재시작이 실제 앱에 적용되었는지 확인해야 합니다. 이때 새 Markdown 파일을 하나 더 만드는 것은 중복 위험이 있으므로 피해야 합니다.

검증 패킷이 길어지면 자동화가 복잡해지지 않나요?

패킷은 긴 문서가 아니라 핵심 증거 묶음입니다. 각 단계의 로그 전체를 붙이는 대신 성공 여부와 필요한 경로만 남기면 오히려 보고가 짧아집니다. 실패할 때만 정확한 오류를 추가하면 되고, 성공한 날에는 제목, 파일, URL, 단계별 OK 정도면 충분합니다.

결론

AI 블로그 자동화에서 검증 패킷은 발행 결과를 운영 가능한 증거로 바꾸는 작은 형식입니다. Futory의 Next.js Markdown 흐름에서는 새 파일을 만들기 전 백업하고, 콘텐츠 테스트와 테마 테스트를 통과한 뒤, 빌드 산출물에서 slug를 확인하고, PM2 재시작 후 공개 상세와 목록을 나눠 검증하는 순서가 중요합니다.

바이브코딩은 빠르게 글을 만들고 개선하는 방식이지만, 공개 블로그에서는 빠르게 확인하고 안전하게 재시도할 수 있는 기준도 필요합니다. 오늘의 제목, 날짜, 파일 경로, 공개 URL, 단계별 상태를 하나의 검증 패킷으로 남기면 자동화는 조용해지고, 운영자는 더 적은 정보로 더 정확한 결정을 내릴 수 있습니다.