AI 블로그 자동화 #10

네이버 클립 자동 업로드 실패, 브라우저가 오프라인이라고 답하고 있었다

AI 블로그 자동화13편 중 10번째

스크립트로 조종하는 브라우저로 업로드를 붙였는데 에러 없이 결과만 없으면 navigator.onLine부터 찍어 본다. false면 스튜디오가 프로필을 안 불러오고 업로드·등록이 조용히 실패한다.

회사를 나와 AI로 사업을 세우는 중이고, 그 한 갈래로 판결문 한 건을 풀어 쓴 블로그 글과 그걸 줄인 짧은 영상 ’판결 썰’을 사람 손 없이 올리고 있다. 이날은 그 영상이 네이버 클립에만 안 올라가던 이유를 찾아 고쳤다.

무엇이 멈췄나

같은 영상이 블로그·유튜브·틱톡에는 다 올라가 있었다. 네이버의 짧은 영상 서비스인 클립에만 없었다. 업로드도 등록도 실패했는데, 실패했다는 신호는 어디에도 남지 않았다.

스크립트 쪽을 두드렸다

클립 크리에이터 스튜디오(clipcreators.naver.com)를 스크립트로 조종하는 브라우저(Aside)로 열고 한 단계씩 찔렀다. 걸린 건 업로드 버튼을 못 찾는다는 Role selector not found였다. 그다음은 브라우저 안에서 파일을 읽는 함수가 없다는 ReferenceError: 'readFile' is not defined였다. 스튜디오 화면 코드에서 API 경로를 뒤지기도 했고, 그렇게 다시 돌리는 사이 스튜디오에는 올리다 만 초안이 9개 쌓였다. 남는 의심은 네이버 쪽 고장이다. 그것도 아니었다.

브라우저가 스스로 오프라인이라고 했다

그 브라우저는 페이지에 navigator.onLine=false를 주고 있었다. 페이지 입장에서는 인터넷이 끊긴 브라우저다. 스튜디오는 그 상태에서 프로필을 불러오지 않았고, 프로필 없이 누른 업로드와 등록은 에러 없이 빠졌다.

조건은 자동화용 브라우저가 페이지에 onLine 값을 false로 넘기는 환경이고, 증상은 페이지는 열리는데 프로필이 필요한 동작만 에러 한 줄 없이 사라지는 것이며, 회피법은 onLine 값을 덮어쓰고 성공 여부를 화면 밖에서 세는 것이다. 셀렉터 에러가 이 원인과 같은 뿌리인지는 확인하지 않았다.

고친 것과 남은 것

업로드 스크립트가 세 가지를 하게 바꿨다. onLine을 덮어쓰고, 비어 있던 profileKey를 채우고, 올리기부터 등록까지 한 번의 호출 안에서 끝낸다. 성공 판정은 공개 클립 수를 API로 세서 한다. 그 뒤 9/29-1·9/30-1·9/30-2 세 편이 PUBLIC_OPEN(공개) 상태로 확인됐다(커밋 b8c4b90).

브라우저 자동화로 업로드를 붙였는데 에러 없이 결과만 없다면, 셀렉터를 고치기 전에 그 페이지에서 navigator.onLine을 한 번 찍어 보세요. 성공 판정은 올라간 개수를 세는 쪽에 거는 게 안전합니다.

디버그하며 생긴 초안 9개(clip-614333.mp4)는 지울지 내가 직접 정하고, 내일 무인 실행 로그에서 클립이 자동으로 붙는지 확인한다.

← 전체 글