happy_various AI 실전 기록

2026년 9월 21일 기준

이 글에는 제휴 링크가 없습니다. 삽화는 GPT 이미지 생성, 도식은 직접 제작했습니다.

자동화 건강검진이란 — 매일 초록불이던 공장에서 멈춘 소포 넷을 찾은 이야기

택배 물류센터를 상상해 보세요. 컨베이어는 잘 돌고, 출구의 검수원은 지나가는 소포마다 손을 흔들고, 저녁 보고서에는 매일 “이상 없음”이 찍힙니다. 그런데 벨트 옆 보조 트랙에 소포 하나가 열흘째 놓여 있어요. 거미줄까지 쳤습니다. 검수원이 게을렀던 게 아닙니다. 그 소포는 검수원 앞을 지나간 적이 없으니까요.

이번 달 제 블로그의 자동 발행 큐에서 정확히 이 일이 있었습니다. 매일 아침 릴리스는 12일 내내 정상 종료했고, 그 아래에서 글 넷이 멈춰 있었어요. 넷 다 실패 로그가 없었고, 넷 다 제가 “어, 이거 왜 아직도 안 올라갔지?” 하고 열어 봐서 찾았습니다. 지난 글에서 “AI가 짠 자동화는 오류 대신 빈 상자를 보낸다”고 썼는데, 이번엔 그보다 한 겹 더 조용한 형태였어요. 빈 상자조차 안 오는 경우입니다.

컨베이어 위 소포들은 흘러가고, 옆 트랙의 소포 하나는 거미줄을 친 채 잠들어 있는 장면 (GPT 이미지 생성)

결론 요약

🔍 1. 멈춰 있던 넷 — 9월 6일부터 17일까지

무엇이얼마나왜 조용했나
인스타 게시 2건10일 대기예약일 칸이 비어 있었다. 릴리스는 “오늘이 예약일인 것”만 보니 후보에 오른 적이 없다
네이버 글 1건12일 건너뜀대본이 옛 형식 파일(naver.md)로 있었다. 새 형식(naver.yml)이 없으면 “대본 없음”으로 정상 건너뜀
사이트 글 1건매일 재계산배포는 됐는데 발행 기록을 안 남겼다. 매일 “아직 안 올라간 글”로 다시 세어지고, 다시 배포되고, 여전히 기록은 없었다
네이버 글 1건 (다른 블로그)3번 실패자동화 브라우저가 다른 블로그 계정으로 로그인돼 있었다. 이건 로그에 실패가 남았지만, 아무도 그 로그를 읽지 않았다

세 번째가 제일 오래 저를 헷갈리게 했습니다. 큐 대시보드에는 “대기 중”인데 사이트에는 이미 올라와 있고, 다음 날도 같은 상태. 배포 스크립트는 매일 성공했으니 실패가 없었고, 기록 스크립트는 애초에 사이트 채널을 기록하도록 만들어지지 않았던 겁니다. “됐다”와 “됐다고 적었다”는 다른 일이더라고요.

9/6~9/17 매일 릴리스는 초록불, 그 아래 멈춰 있던 항목 넷의 막대 (직접 제작)

🧩 2. 왜 로그에 안 나오나 — 큐가 후보를 고르는 방식

릴리스 스크립트는 매일 아침 이렇게 후보를 고릅니다. 예약일이 오늘이거나 지났고, 그 채널에 아직 발행 기록이 없고, 대본이 있는 글. 세 조건을 다 만족해야 후보예요. 넷을 이 조건에 대 보면 왜 조용했는지 바로 보입니다.

지난 글의 대비법 세 번째가 “실패한 건 다음 실행에서 다시 잡게 하라”였습니다. 그건 지켰어요. 그런데 실패조차 하지 않는 항목은 그 규칙이 못 잡습니다. 후보에 오르지 못한 소포는 재시도 대상도 아니니까요.

청진기를 든 로봇 의사가 컨베이어 위 소포를 진찰하는 장면 (GPT 이미지 생성)

🩺 3. 큐 닥터 — 릴리스 직후 여섯 가지를 본다

그래서 9월 17일부터 릴리스 스크립트 바로 뒤에 점검 스크립트를 하나 붙였습니다. 이름은 큐 닥터. 아침 6시 자동 실행 파일의 핵심은 두 줄이에요.

.venv\Scripts\python.exe automations\publish\release_queue.py  >> dashboards\daily-release.log
.venv\Scripts\python.exe automations\publish\queue_doctor.py --deep >> dashboards\daily-release.log

닥터가 보는 여섯 항목은 넷의 사고에서 그대로 나왔습니다.

#점검어떤 사고에서 왔나
1예약일 없음 — 채널 목록에는 있는데 발행 기록에도 예약에도 없다인스타 2건
2기한 초과 — 예약일이 지났는데 미발행. 이틀 이상이면 실패가 반복되는 중계정 불일치로 3번 실패한 건
3대본 없음 — 네이버 채널인데 새 형식 대본 파일이 없다 (옛 형식만 있는 경우 포함)네이버 12일
4카드 없음 — 인스타 채널인데 카드뉴스 캡션 파일이 없다 (릴리스가 건너뛴다)같은 유형의 예방
5릴스 누락 — 인스타 채널인데 영상은 있고 릴스 파일이 없다 (경고)“영상이 있으면 릴스로” 규칙이 조용히 잊히는 것 방지
6로그인 계정 — 자동화 브라우저 두 개에 각각 맞는 블로그 계정이 로그인돼 있는가엉뚱한 계정 3번 실패

사이트 기록 누락(세 번째 사고)은 점검 항목이 아니라 릴리스 쪽을 고쳐서 막았습니다. 배포가 성공했을 때만 공개 주소와 함께 기록을 남기게요. 닥터는 그 기록이 없으면 2번 항목으로 잡습니다.

결과는 dashboards/queue-doctor.md 한 장으로 남고, 조치가 필요한 항목이 있으면 종료 코드 1로 끝나서 로그에 표시됩니다. 여섯 번째 항목은 실제로 브라우저를 열어 블로그 첫 화면으로 가 보고 어느 계정인지 확인하는 방식이라, --deep 옵션일 때만 돕니다.

📋 4. 오늘 아침 보고서

9월 21일 6시 보고서의 첫 줄입니다.

조치 필요 0건 · 경고 0건 · 정상 대기 60건 — 멈춘 항목 없음. 큐에 남은 것은 전부 예정일이 오늘 이후다.

그 아래에 예정일·글·채널 표가 60줄 이어집니다. 9월 22일 인스타 2건과 네이버 2건, 23일…, 10월 중순까지요. 0건이어도 씁니다. “안 봤다”와 “봤는데 없었다”를 구분하려면 없었다는 기록이 있어야 하니까요.

해 뜨는 창가에서 체크 여섯 개가 모두 초록인 점검표를 든 로봇 (GPT 이미지 생성)

💡 5. 원칙 셋 — 어떤 자동화에든 옮길 수 있는 것

⚠️ 6. 한계 — 닥터도 코드입니다

🎯 시작 코스 — 내 자동화에 청진기 대기

  1. 자동화가 다루는 항목 목록을 처음부터 끝까지 출력해 봅니다 (큐, 예약, 대기열, 뭐든)
  2. 각 항목에 대해 세 질문: 날짜가 있나? 필요한 재료 파일이 다 있나? 끝났으면 끝났다는 기록이 있나?
  3. 셋 중 하나라도 “아니오”인 항목을 세는 스크립트를 씁니다. AI에게 “이 목록에서 날짜가 비었거나 파일이 없거나 결과가 있는데 기록이 없는 항목을 찾아 표로 만들어줘”라고 시키면 초안은 금방 나옵니다
  4. 실행 스크립트 바로 다음 줄에 붙입니다
  5. 결과를 파일 한 장에 씁니다. 0건이어도요. 사고가 나면 그 사고의 모양을 항목으로 추가합니다

물류센터의 검수원은 잘못이 없었습니다. 잘못은 검수원 앞을 지나지 않는 트랙이 있다는 걸 아무도 몰랐던 것이에요. 건강검진은 그 트랙을 매일 아침 한 번 걸어 보는 일입니다.


기준: 2026-09-21. 네 건의 멈춤과 기간은 저장소 커밋(9/16~17 “queue: unstick the three items that had no scheduled date”, “playwright post: record the site publication that was never written down”, “bucket dolly: naver ddakman published after three failed queue attempts”)과 점검 스크립트의 기록 기준입니다. 여섯 항목과 아침 6시 실행 파일은 실제 파일에서 발췌했고, 보고서 문장은 이날 생성된 dashboards/queue-doctor.md 첫 줄입니다. 삽화는 GPT 이미지 생성, 도식은 직접 제작했습니다.