AI 블로그 자동화 #3 무인 발행이 OAuth 만료로 멈출 때 확인할 것

AI 블로그 자동화5편 중 3번째

검증 기간을 3일로 잡았으면 결과 글도 3일 뒤에 쓴다. 숫자가 나오기 전에 써서 예약 큐에 넣어둔 결과 글은 자동 발행이 아니라 발행 시각만 미뤄둔 창작이다.

스레드에 글 올리는 일을 사람 손에서 떼려고 세 가지 경로를 하루에 차례로 밀어봤다. 퇴사하고 AI로 회사를 만드는 중이고, 발행은 제일 먼저 기계에 넘기려던 일이다. 세션 14개에 도구 호출 642회, 실패 신호 66건이 남았고 자동으로 나간 글은 없다.

큰 숫자 2초. 무인 발행 실행의 시작과 끝 간격이 2초였고, 실패인데도 아무 알림이 없었다.

브라우저를 대신 모는 경로

첫 경로는 브라우저를 열어 사람처럼 눌러 올리는 것이다. 14시 44분에 그 무인 실행 기록을 열었더니 시작과 끝의 간격이 2초였다. 브라우저를 띄우고 글을 올리는 일이 2초로 끝날 수는 없으니 실패가 맞는데, 실행은 아무 소리도 내지 않았고 기록만 남아 있었다.

처음 의심한 것은 내 손이었다. 실행이 도는 동안 창을 닫아서 끊겼다고 적어두고 넘어갈 뻔했는데, 로그를 열자 창과 상관없는 줄이 나왔다.

Failed to authenticate: OAuth session expired and could not be refreshed

14시 44분에 인증 만료가 처음 찍혔고, 14시 49분과 15시 43분에는 갱신까지 실패했다는 말이 뒤에 붙었다. 한 시간 사이에 세 번이다. 만료는 흔한 일인데 갱신까지 실패했다는 말이 같은 줄에 붙어 있어서, 다시 로그인하기 전에는 이 경로로 아무것도 못 내보낸다는 뜻이었다.

공식 API로 가려던 경로

인증이 끊기는 브라우저를 놔두고 API로 올리기로 하고, 16시 18분에 Meta 개발자 계정 등록을 시작했다. 인증코드를 입력하면 올바른 번호를 입력하라고 했고, 재전송을 눌러도 코드는 오지 않았다. 받은 안내는 “번호 중복”이었다. 16시 50분에 멈추고 내일로 넘겼다.

막히는 김에 권한 문서를 열어봤다. 각 권한은 App Review를 거쳐야 앱에 역할이 없는 사용자에게 부여되고, 본인 계정만 쓰는 경우는 별도 조건이 없다고 적혀 있다. 그러니 내 계정 하나만 올리는 지금 단계에서 심사는 문제가 아니었고, 걸린 건 전화번호 하나였다.

예약 발행은 자동화가 아니었다

두 경로가 막혀서 오늘 몫은 예약 발행으로 대체했다. 걸어둔 것은 1편, 전날 밤에 써서 9월 14일 22시에 나가도록 예약해둔 스레드 원고였다. 소재는 가격 구간을 격자로 나눠 사고파는 코인 자동매매(그리드)였다. 과거 분봉으로 돌리는 백테스터를 먼저 만들고 실제 주문 없이 도는 페이퍼 트레이딩으로 넘겨서, 3일 검증에 막 들어간 참이었다.

밤에 후속 원고를 쓰다가 검증 데이터가 쌓이기 전에 글부터 쓰지 말라는 지적을 받았고, 사흘치 숫자가 아직 한 줄도 손에 없는데 결과를 말하는 원고가 22시라는 예약 시각을 달고 서 있다는 게 그제서야 이상해 보여서 그 1편을 폐기했다. 인증 만료와 원고 교체가 같은 시간대에 일어났지만, 원고를 바꾼 이유가 만료 때문인지는 기록에 없다.

그래서 기준을 이렇게 정했다. 검증 기간을 3일로 잡았으면 결과 글도 3일 뒤에 쓴다. 숫자가 나오기 전에 결과를 써두고 발행 시각만 예약하면, 그건 자동 발행이 아니라 시각만 미뤄둔 창작이다. 첫 문장을 언제 쓸지는 예약 기능이 정하지 않는다. 검증을 N일로 잡았으면 N일치 숫자를 본 날이 그날이다.

검증 기간을 정해두고 그 결과를 글로 낼 계획이라면, 초안을 미리 써서 예약 큐에 넣지 마세요. 저는 브라우저도 API도 막힌 날에 예약 발행을 대체재로 골랐다가, 정작 지워야 할 원고를 22시에 걸어두고 있었습니다.

내일 다시 여는 것

Meta 개발자 계정 인증을 다시 받는다. 페이퍼 트레이딩 1일차 결과를 확인하고, 텔레그램으로 리포트를 보내는 스케줄 잡의 에러 로그에 남은 triggerUncaughtException(이 어디서 나오는지 본다.

← 전체 글